当主 Java 程序包含外部 Java 包时,如何在命令行上编译它?



我是一个相对的Java新手,所以如果这个问题看起来有点基本,我深表歉意。我已经在这里搜索了高低的答案,但我没有找到任何有帮助的东西。

问题:

虽然我能够从 IDE 环境将外部包集成到我的 Java 程序中,但我正在尝试从命令行运行一个非常基本的程序,该程序调用我编写的单独的基本包文件 - 并且只是在做所有这些,因为我想自下而上地了解包文件如何与 Java 的主程序相关。

我的桌面上有一个名为MyProgram的程序.java:

import org.somepackage;
public class MyProgram {
public static void main(String arguments[]) {
System.out.println("Programme up and running...");
Human myHuman = new Human(); 
myHuman.scream();
}

仍然在桌面上,我有另一个我命名为 src 的文件夹,在其中我创建了与包名称相对应的必要子文件夹,即 ./src/org/somepackage- 在这个位置,我有 Human.java 文件,该文件定义了 Human 类,内容如下:

package org.somepackage;
public class Human {
public void scream() {
System.out.println("I exist!!");
}
}

然后,我再次在桌面上创建了一个类文件夹,并在命令行上运行了以下编译命令:

javac -d ./classes/ ./src/org/packagename/Human.java

这运行良好,并按预期在./classes/org/packagename/位置创建了Human.class文件。

但是,当我尝试在命令行上编译MyProgram时.java我失败的地方,即

javac -cp ".:./classes/" MyProgram.java

如您所见,我的类路径包含对 MyProgram.java 文件的当前位置 ("."(的引用,并且它包含对 classes 文件夹 ("./classes/"( 的引用,该文件夹是 org.somepackage 包的基本位置,其中的子文件夹 (./classes/org/somepackage/( 可以找到Human.class文件。

在这个阶段,我只是期望Java引擎将MyProgram.java编译成MyProgram程序.class但是,相反,我得到了一个错误:

MyProgram.java:1:错误:包组织不存在

我一直按照此处列出的说明进行操作:

https://www3.ntu.edu.sg/home/ehchua/programming/java/J9c_PackageClasspath.html

而且我似乎没有偏离说明 - 但我无法在 Stackoverflow 或其他任何地方找到关于此编译失败的可能原因的解释。如果有人有想法,您的帮助将不胜感激。

谢谢

你的错误就在这里

import org.somepackage; <--
public class MyProgram {
public static void main(String arguments[]) {
System.out.println("Programme up and running...");
Human myHuman = new Human(); 
myHuman.scream();
}

实际上你忘了导入类,你需要写这个名字import org.somepackage.Human;导入所有包内容import org.somepackage.*;或在代码中写入类的完整限定名

org.somepackage.Human myHuman = new org.somepackage.Human(); 
myHuman.scream();

纠正错误:

import org.somepackage.Human;
public class MyProgram {
public static void main(String arguments[]) {
System.out.println("Programme up and running...");
Human myHuman = new Human(); 
myHuman.scream();
} 

之后,通过以下命令编译您的人类.java:

javac -d classes Human.java

和我的程序.java

javac -d classes -cp "classes" MyProgram.java

并通过以下方式运行我的程序

java -cp "classes" MyProgram

相关内容

  • 没有找到相关文章

最新更新