[英]How do I compile my main Java program on the command line when it includes an external java package?
我是一個相對的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文件夾,並在命令行上運行了以下編譯命令:
javac -d ./classes/ ./src/org/packagename/Human.java
運行正常,並按預期方式在./classes/org/packagename/位置中創建了Human.class文件。
但是,我失敗的地方是我隨后嘗試在命令行上編譯MyProgram.java的時候,即
javac -cp ".:./classes/" MyProgram.java
如您所見,我的類路徑包含對MyProgram.java文件當前位置( “。” )的引用,並且包含對類文件夾( “ ./classes/” )的引用,這是基本位置對於其中子文件夾( ./classes/org/somepackage/ )所在的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或其他任何地方找到有關此編譯失敗的可能原因的解釋。 如果有人有想法,將非常感謝您的幫助。
謝謝,
你的錯誤在這里
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
並通過運行MyProgram
java -cp "classes" MyProgram
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.