簡體   English   中英

如何在沒有包信息的情況下使用jar文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM