簡體   English   中英

Java JAR無法在Class-Path上加載類?

[英]Java JAR unable to load class on Class-Path?

我有一個jar文件,該文件在另一個jar文件中使用了一個類。 但是,當我運行第一個jar文件時,出現一個異常,即找不到該類。 我找不到有關如何解決此問題的任何文檔。

我有兩個.jar文件MyApp.jar和sqljdbc42.jar。 這兩個.jar文件都位於同一目錄中。

MyApp.jar的主代碼如下:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

MyApp.jar的清單具有以下內容:

Manifest-Version: 1.0
Main-Class: com.mycompany.myapp.MyApp
Class-Path: sqljdbc42.jar
<blank line>

com.microsoft.sqlserver.jdbc.SQLServerDriver類位於jar sqljdbc42.jar中。

執行MyApp.jar時,發生以下異常:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
  at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:264)

使用IntelliJ中內置的Java 8,通過在7Zip中打開jar來驗證清單內容。 任何有關如何使它(看似簡單,基本的Java JAR概念)工作的建議都將不勝感激。

有三種方法可以解決您的問題:

1)您可以使用IDE“ Eclipse Neon ”生成jar。

  • 在您的項目“ lib”中創建文件夾,並將sqljdbc42.jar放入其中;

  • sqljdbc42.jar添加到classPath:屬性-> Java構建路徑->庫->添加JAR ...(從“ lib”中選擇jar);

  • 右鍵單擊項目->導出...->可運行的JAR文件->啟動配置(選擇主類),然后檢查庫處理:將所需的庫提取到生成的JAR中

Eclipse將自動重新包裝所有參考庫,而沒有任何安全問題和ClassNotFound異常。

2)我們應該將項目轉換為Maven項目。 然后使用特殊的插件生成JAR並創建自定義庫的依賴項。

3)我們甚至可以使用Intellij Idea生成它。 但是,我們應該使用所有簽名庫都在生成的jar之外的配置來創建應用程序工件。

我認為第一個變體是最簡單的。 核實。 如果沒有幫助,我將詳細介紹其他方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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