Java通过Linux命令行与软件包

时间:2019-03-04 18:25:31

标签: java linux package classpath javac

我一直依靠Java使用IDE,并且希望使用终端来了解更多信息。

我有一个名为 test.java 的Java应用程序。这取决于其他jar文件的编译和运行。

我的应用程序的第一行还创建了一个程序包,如下所示

package package1;

现在,当我使用

进行编译时:

javac -cp .:"JAR FILE PATHS HERE" test.java

它可以编译。但是,当我尝试如下执行时:

java -cp .:"JAR FILE PATHS HERE" test

我收到错误Error: Could not find or load main class test

如果我没有使用package package1;在应用程序中创建程序包,它将执行正常。

如果创建package1 tho,如何执行它?使用路径package1 / test不起作用

1 个答案:

答案 0 :(得分:1)

您需要仔细检查文件夹结构-如您所知,当直接使用文件夹(而不是jar文件)时,包是类路径下的子文件夹(请参阅完整的文档,或参阅以下内容一个例子)。

这意味着,在您的示例中,您应该具有文件夹结构:

workingFolder
    \- package1
        \- Test.java
        \- Test.class

workingFolder运行javac package1/Test.java;在Test.class下产生package1

要运行,请从workingFolder开始运行java -cp . package1.Test

文件夹workingFolder在类路径中,因此package1.Test被解析为package1/Test.classpackage1文件夹基本上是package1包。

编辑,并且Test类必须位于正确的包中,例如:

package package1;
class Test {
  public static void main(String[] v) {
    System.out.println("hw!");
  }
}

另外,请参见https://docs.oracle.com/javase/tutorial/getStarted/cupojava/index.html,以获取有关如何使用命令行编译和运行Java程序的良好解释。