Java通过Linux命令行与包[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我一直依赖IDE使用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不起作用

java linux package classpath javac
1个回答
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.class; package1文件夹基本上是package1包。

编辑,Test类必须在正确的包中,如:

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

另外,有关如何使用命令行编译和运行Java程序的详细说明,请参阅https://docs.oracle.com/javase/tutorial/getStarted/cupojava/index.html

© www.soinside.com 2019 - 2024. All rights reserved.