在命令行中创建Java包

8
尽管对于编写高级java项目,使用IDE是推荐的,但我个人更喜欢几乎完全在命令行下运行(使用gedit作为文本编辑器)。所以请不要只告诉我“只需使用eclipse!”之类的 :P
我的问题是用命令创建java包的方法是什么。
我不是在谈论在命令行中运行的应用程序的打包,而是在命令行中创建包。我是在创建文本文件吗?我正在创建目录吗?
相关地,如何在没有IDE的情况下链接到相关的libs和natives?
我知道我在这里变得非常棘手,但我真的更喜欢在命令行中工作获得的控制。

3
"创建一个包"?你是指"创建一个JAR包"吗?如果是的话,可以从这份文档开始:http://docs.oracle.com/javase/tutorial/deployment/jar/index.html。 - Oliver Charlesworth
不,JAR 文件很容易处理 :P 我指的是一个真正的包装(事实证明,它只是一个目录... - gossfunkel
5个回答

9
有三个部分:(1)创建目录结构;(2)在Java文件中指定包; (3)编译。
例如,如果你想创建包 com.mycompany.myproject,那么你需要从项目的基础目录开始,然后:
(1) 创建目录com/mycompany/myproject (2) 在该目录下创建Java文件,在其中声明package com.mycompany.myproject;
(3) 编译文件,例如,使用 javac -cp . com/mycompany/myproject/*.java
你可能需要指定不同的输出目录,以避免混淆源代码和编译后的类。
如果需要使用外部库(.jar文件)进行编译,则需要使用-cp-classpath命令行参数指定它们,例如:
javac -cp .:some_library.jar:lib/another_library.java com/mycompany/myproject/*.java

将所有外部库放在一个地方可能是个好主意,例如你的主项目目录下的lib子目录。顺便说一下,上面的javac命令假设您使用类Unix环境。如果您使用的是Windows,则需要使用;来分隔路径。


5

包是文件系统上的目录。因此,您的包:com.mycompany.util 对应于目录 com/mycompany/util

在运行和编译等操作时,您当前的工作目录应该是顶级目录所在的位置。

要包含库,请在编译和运行时将其包含在类路径中。例如,创建一个项目目录myproject,在其中使用myproject/src/下的java文件和包,在myproject/libs/下使用您使用的库。然后,当您的当前工作目录为myproject时,执行java -cp .:libs/*.jar或相同的javac命令。

但我建议您考虑使用Ant或Maven。


3
没错,"packages"就是有组织的目录结构。 - Suraj Chandran

2
您可以通过使用打包工具(例如AntMaven)来在命令行上顺利工作。Maven尤其方便,因为它是一个更高级别的工具,已经知道如何构建各种项目类型:命令行应用程序、Web应用程序、库等。它还通过从存储库下载它们来处理库依赖项。

我认为这不是 OP 想要的。他谈论的是 Java 源代码中的包,而不是如何打包最终应用程序。 - Aleks G
@AleksG - Maven仍然有用,因为OP需要“链接到相关的库”。 - David Harkness

1

Java包只是一个目录结构,因此在终端中创建一个包的简单方法,比如说com.organization.test,就是:

mkdir -p com/organization/test

0

// 创建一个新目录和子文件夹,将其作为您的包

$ mkdir -p parent/child 

// 进入它的代码:

$ cd parent/child                    

//创建一个空的Java文件

$ touch MyClass.java

//编辑当前文件

$ nano MyClass.java

package child; 
 public class MyClass { 
}

提示:您计算机上的目录结构与包名有关。这意味着当您编辑 .java 文件时,它需要有一个包声明(即您的包),否则您将拥有一个默认包(例如:java.util.*)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接