我是一个相对的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