2017-07-01 65 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

相關問題