Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当主Java程序包含外部Java包时,如何在命令行上编译它?_Java_Command Line_Compilation_Java Package - Fatal编程技术网

当主Java程序包含外部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 {

我是一个相对的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!!");

  }

}
然后,我又在桌面上创建了一个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