簡體   English   中英

嘗試將Java類路徑放入jar清單中,不確定使用哪個字符串

[英]Trying to put a java classpath into a jar manifest, not sure which string to use

我在文件夾中有一個班級和一個罐子。 sqlite-jdbc-3.7.2.jar dbBuilder.class

要運行dbBuilder.class,我在命令行上運行它:

java -classpath ".:sqlite-jdbc-3.7.2.jar" dbBuilder

現在,如果我想將這兩個Jar一起使用,則創建一個清單,如下所示:

Main-Class: dbBuilder
Class-Path: sqlite-jdbc-3.7.2.jar

我用它編譯:

jar cfm dbTest.jar Manifest.txt dbBuilder.class sqlite-jdbc-3.7.2.jar

然后運行它:

 java -jar dbBuilder.jar 

我得到了這個堆棧跟蹤:

線程“主”中的異常java.lang.ClassNotFoundException:java.net上的org.sqlite.JDBC,java.net處的java.security.AccessController.doPrivileged(本機方法)的URLClassLoader $ 1.run(URLClassLoader.java:202)。 URLClassLoader.findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:306)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass (ClassLoader.java:247)在java.lang.Class.forName0(本機方法)在java.lang.Class.forName(Class.java:171)在dbBuilder.createTables(dbBuilder.java:22)在dbBuilder.main( dbBuilder.java:67)

我很困惑,因為在沒有jar的情況下運行它時使用的類路徑與清單中放入的類路徑不同,但是我嘗試使用用於將其作為類運行並將其放入清單中的類路徑那也不起作用。 所以我不確定如何編譯它,也要跟進-一旦我運行了dbBuilder.jar,我是否可以再次打包它並仍然訪問sqlite類? 提前致謝 !!

JAR文檔說:

“類路徑:此屬性的值指定此應用程序或擴展程序所需的擴展程序或庫的相對URL。URL用一個或多個空格分隔。應用程序或擴展程序類加載器使用此屬性的值來構造其內部搜索路徑。”

如果相對URL具有相對路徑,則將相對於包含主JAR文件的目錄進行解析。 (參考: https : //stackoverflow.com/a/16502944/139985

在您的示例中,這意味着dbTest.jarsqlite-jdbc-3.7.2.jar將需要位於同一目錄中。 我希望這就是您在這里犯的錯誤。

暫無
暫無

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

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