我是一个相对的 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/" ) 的引用对于 org.somepackage 包,其子文件夹(./classes/org/somepackage/)上可以找到Human.class文件。
在这个阶段,我只是希望 java 引擎将MyProgram.java编译成程序 MyProgram.class - 但是,相反,我得到了一个错误:
MyProgram.java:1:错误:包 org 不存在
我一直按照此处列出的说明进行操作:
https://www3.ntu.edu.sg/home/ehchua/programming/java/J9c_PackageClasspath.html
而且我似乎没有偏离说明 - 但是我无法在 Stackoverflow 或其他任何地方找到关于此编译失败的可能原因的解释。如果有人有想法,我们将非常感谢您的帮助。
谢谢,