![](/img/trans.png)
[英]Adding Class-Path (sqljdbc4) to manifest file makes JAR unable to find/load main class Main
[英]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);
Eclipse將自動重新包裝所有參考庫,而沒有任何安全問題和ClassNotFound
異常。
2)我們應該將項目轉換為Maven項目。 然后使用特殊的插件生成JAR並創建自定義庫的依賴項。
3)我們甚至可以使用Intellij Idea生成它。 但是,我們應該使用所有簽名庫都在生成的jar之外的配置來創建應用程序工件。
我認為第一個變體是最簡單的。 核實。 如果沒有幫助,我將詳細介紹其他方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.