Java 通过带有包的 Linux 命令行

标签 java linux package classpath javac

<分区>

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

我有一个名为 test.java 的 Java 应用程序。依赖其他jar文件编译运行。

我的应用程序的第一行也创建了一个包如下

包package1;

现在,当我编译它时:

javac -cp .:"JAR 文件路径在这里"test.java

它编译得很好。但是,当我尝试按如下方式执行它时:

java -cp .:"JAR FILE PATHS HERE"测试

我得到错误错误:无法找到或加载主类测试

如果我不使用 package package1; 在我的应用程序中创建包,它会执行正常。

如果我确实创建了 package1,我该如何执行它?使用路径 package1/test 不起作用

最佳答案

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

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

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

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

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

文件夹workingFolder在classpath中,所以package1.Test解析为package1/Test.classpackage1 文件夹基本上 package1 包。

编辑 并且测试类必须在正确的包中,例如:

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 程序的详细说明行。

关于Java 通过带有包的 Linux 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54989330/

相关文章:

java - 为二叉搜索树实现 add 方法

java - Jsoup不解析表中的数据

linux - 在 AWS 实例中设置环境变量

Linux: "fstab"有额外的挂载选项吗?

ubuntu - 运行配置脚本时缺少 Orc-0.4.6

java - 如何使用正则表达式在 Eclipse 中定义文件关联的 contentType

java - 服务器套接字输入流在断开连接之前返回 null

java - 如何将 "jar"转换为 Linux 可执行文件?

ant - 使用 Apache Ant 创建 Debian 包

python - 面向初学者的关于 OSX 上的 Python 包管理的常识性建议