2017-07-01 75 views
0

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

package org.somepackage; 

public class Human { 

    public void scream() { 

    System.out.println("I exist!!"); 

    } 

} 

我然后在桌面上创建一个文件夹类,又和在命令行中运行以下编译命令:

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

这种运行良好和创造的 - 如预期 - 内的Human.class文件./ classes/org/packagename/location。

然而,当我倒下是当我再尝试编译MyProgram.java在命令行上,即

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

正如你所看到的,我的类路径中包含了对当前位置的引用( (“。”),它包含对类文件夹(“./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或其他任何地方的解释,说明编译失败的可能原因。如果有人有一个想法,你的帮助将非常感激。

感谢,

回答

0

你的错误是在这里

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(); 

    } 

后,通过该命令编译Human.java:

javac -d classes Human.java 

和MyProgram.java

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

,并通过计算器

java -cp "classes" MyProgram 
+0

我的第一篇运行MyProgram ,在提交问题几分钟后,我就解决了我的问题 - 谢谢你真是太棒了!代码现在正在工作... – GoingMush

+0

@GoingMush好问题包含一半的答案。当您的所有代码都有效时,根据网站规则将答案标记为已接受。 – fxrbfg

相关问题