Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图将java类路径放入jar清单,但不确定要使用哪个字符串_Java_Sqlite_Jar_Classpath - Fatal编程技术网

试图将java类路径放入jar清单,但不确定要使用哪个字符串

试图将java类路径放入jar清单,但不确定要使用哪个字符串,java,sqlite,jar,classpath,Java,Sqlite,Jar,Classpath,我有一个类和一个jar在一个文件夹中。 sqlite-jdbc-3.7.2.jar dbBuilder.class 要运行dbBuilder.class,请在命令行上运行以下命令: java -classpath ".:sqlite-jdbc-3.7.2.jar" dbBuilder 现在,如果我想将这两个容器放在一起,我会创建一个清单,如下所示: Main-Class: dbBuilder Class-Path: sqlite-jdbc-3.7.2.jar 我用以下方法编译它: jar c

我有一个类和一个jar在一个文件夹中。 sqlite-jdbc-3.7.2.jar dbBuilder.class

要运行dbBuilder.class,请在命令行上运行以下命令:

java -classpath ".:sqlite-jdbc-3.7.2.jar" dbBuilder
现在,如果我想将这两个容器放在一起,我会创建一个清单,如下所示:

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 
我得到了这个堆栈跟踪:

线程“main”java.lang.ClassNotFoundException中的异常: org.sqlite.JDBC位于 java.net.URLClassLoader$1.run(URLClassLoader.java:202)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:190)位于 loadClass(ClassLoader.java:306)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)位于 loadClass(ClassLoader.java:247)位于 java.lang.Class.forName0(本机方法)位于 java.lang.Class.forName(Class.java:171)位于 位于的dbBuilder.createTables(dbBuilder.java:22) main(dbBuilder.java:67)


我很困惑,因为当我在没有jar的情况下运行它时,我用来运行它的类路径与我放在清单中的类路径不同,但我尝试使用我用来作为类运行它的类路径并将它放在清单中,但这也不起作用。所以我不知道如何编译它,也不知道如何跟进——一旦这个dbBuilder.jar运行起来,我是否能够再次使用它并仍然访问sqlite类?提前谢谢

JAR文档中说:

“类路径:此属性的值指定此应用程序或扩展需要的扩展或库的相对URL。URL由一个或多个空格分隔。应用程序或扩展类加载器使用此属性的值构造其内部搜索路径。”

如果相对URL具有相对路径,则它们将相对于包含主JAR文件的目录进行解析。(参考资料:)


在您的示例中,这意味着
dbTest.jar
sqlite-jdbc-3.7.2.jar
必须位于同一目录中。我想这就是你在这里犯的错误。

我上面提到过,它们在同一个目录中。。不过,你说我现在的做法应该是正确的。这个问题有什么解决办法吗?我也有同样的问题?