[英]How to use jar files without package information?
我有一個名為“ MyTools”的罐子。 該罐子位於c:\\ data文件夾中。 我在同一文件夾“ UseTools.java”中創建了一個新文件。 現在,我想在UseTools.java中使用MyTools.jar中的某些類。 我試過了,但似乎沒有用:
import MyTools.*;
public class UseTools
{
public static void main(String[] args)
{
MyTools.SomeClass foo = new SomeClass();
SomeClass.doSomething();
}
}
我試圖用以下方法編譯它:
javac -cp . UseTools.java
並得到以下錯誤信息:
UseTools.java:1: package MyTools does not exist
import MyTools.*;
^
UseTools.java:7: package MyTools does not exist
MyTools.SomeClass foo = new SomeClass()
^
2 errors
我沒有在任何類中設置包名稱。
我必須在jar類中設置包名稱嗎?
要提及與問題標題更相關的內容:在Java中,您不能從命名包中的代碼訪問默認包中的類。
這意味着,如果jar文件中的類不顯式屬於任何軟件包,並且在jar中,您的文件直接位於根文件夾中而沒有子文件夾,則它們位於默認軟件包中。 這不是很詳細,缺少模塊化和可擴展性,但是在技術上還可以。 然后,您只能從默認包中的代碼中使用這些類。 但這並不一定意味着它必須位於同一罐中。 如果您有多個src或class文件夾,它們都可以在默認包中包含可以交互的類。 JAR文件中的組織和項目中的包結構彼此獨立。
但是,我強烈建議您使用顯式的軟件包信息。
在MyTools.jar中,應該有一個名為MyTools的軟件包。 並且在編譯之前,您應該將jar添加到類路徑中。
您需要添加-cp file.jar而不是-cp。
后者將僅拾取.class文件。 順便說一句:為什么不使用像netbeans,eclipse或intelliJ這樣的IDE?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.