当主Java程序包含外部Java包时,如何在命令行上编译它?
我是一个相对的Java新手,因此,如果这个问题显得有些基本,我深表歉意。我在谷歌上到处搜索答案,但我找不到任何有用的答案 问题: 虽然我能够从IDE环境将外部包集成到Java程序中,但我正在尝试从命令行运行一个非常基本的程序,该命令行调用一个单独的,我写的基本包文件——我只是在做这些,因为我想从下到上了解包文件与Java主程序的关系 我的桌面上有一个名为MyProgram.java的程序:当主Java程序包含外部Java包时,如何在命令行上编译它?,java,command-line,compilation,java-package,Java,Command Line,Compilation,Java Package,我是一个相对的Java新手,因此,如果这个问题显得有些基本,我深表歉意。我在谷歌上到处搜索答案,但我找不到任何有用的答案 问题: 虽然我能够从IDE环境将外部包集成到Java程序中,但我正在尝试从命令行运行一个非常基本的程序,该命令行调用一个单独的,我写的基本包文件——我只是在做这些,因为我想从下到上了解包文件与Java主程序的关系 我的桌面上有一个名为MyProgram.java的程序: import org.somepackage; public class MyProgram {
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!!");
}
}
然后,我又在桌面上创建了一个classes文件夹,并在命令行上运行了以下compile命令:
javac -d ./classes/ ./src/org/packagename/Human.java
这运行正常,并且如预期的那样在./classes/org/packagename/location中创建了Human.class文件
然而,当我试图在命令行上编译MyProgram.java时,我就失败了
javac -cp ".:./classes/" MyProgram.java
如您所见,我的类路径包含对当前位置的引用。对于MyProgram.java文件,它包含对classes文件夹的引用。/classes/是org.somepackage包的基本位置,在其子文件夹中。/classes/org/somepackage/on可以找到Human.class文件
在这个阶段,我只是希望java引擎将MyProgram.java编译到程序MyProgram.class中,但是,我得到了一个错误:
java:1:错误:包组织不存在
我一直遵循这里列出的说明:
我似乎没有偏离指令,但我无法找到有关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;
public class MyProgram {
public static void main(String arguments[]) {
System.out.println("Programme up and running...");
Human myHuman = new Human();
myHuman.scream();
}
之后,通过以下命令编译Human.java:
javac -d classes Human.java
和MyProgram.java
javac -d classes -cp "classes" MyProgram.java
并运行我的程序
java -cp "classes" MyProgram
我在stackoverflow上的第一篇帖子,在提交问题几分钟后,我得到了问题的解决方案——非常感谢!代码现在正在运行…@GoingMush好问题包含一半答案。当您的所有代码正常工作时,根据站点规则将应答标记为已接受。
java -cp "classes" MyProgram