Java SQLite org.sqlite.JDBC 类路径损坏?

标签 java sqlite jdbc sqlitejdbc

我在使用 JDBC sqlite 和 org.sqlite.JDBC 时偶然发现了一个奇怪的错误 我的代码在 Windows 上编译并运行良好。 但是当我尝试将其移至 Ubuntu 时,它开始显示以下内容:

Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:259)
        at mall.SQLiteJDBC.<init>(SQLiteJDBC.java:27)
        at mall.AllegroReader.<init>(AllegroReader.java:33)
        at mall.Mall.main(Mall.java:31)

我正在使用 java -classpath "sqlite-jdbc-3.7.2.jar"-jar Mall.jar"java -classpath "sqlite-jdbc4-3.8.jar"运行它。 2-SNAPSHOT.jar”-jar Mall.jar 两个版本都与我的 jar 位于同一目录中,并且我尝试了十几个指定类路径的不同选项,并且其行为完全相同。我尝试了openjdk和oracle jdk。 我尝试在 Ubuntu 上重建它、更改 ant .xml、更改路径等。

我不知道发生了什么。请帮忙。

这是我的 dist 目录中发生的情况:

work1@workwork:/var/www/mall/dist$ ls
mall.db  Mall.jar  Mall.jar.old  sqlite-jdbc-3.8.4.3-SNAPSHOT.jar

work1@workwork:/var/www/mall/dist$ java -classpath "sqlite-jdbc-3.8.4.3-SNAPSHOT.jar:Mall.jar" Mall
Error: Could not find or load main class Mall

最佳答案

当您使用-jar时,类路径将被忽略。

您必须在 jar 中包含依赖项(或者至少让 jar list 指向它们),或者使用 -classpath sqlite.jar:Mall.jar the.main.class 运行它.

Error: Could not find or load main class Mall.main. all files are there, my main class comes from Mall.java and is in mall package which compiles to Mall.jar

所以正确的命令行是:

java -classpath "sqlite-jdbc-3.8.4.3-SNAPSHOT.jar:Mall.jar" mall.Mall
<小时/>

OP 调查结果

要查看 jar 中的类,请使用 jar tf Mall.jar - 由此我得到 mall/Mall.class ,这意味着我包含 main 的类是 mall。商城

它显示了

商城/Mall.class

所以我应该使用 mall.Mall 作为运行的类(而不是拉扯我的头发)

关于Java SQLite org.sqlite.JDBC 类路径损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24111912/

相关文章:

java - ubuntu 通信链接失败时的 Mysql 和 java 连接问题

java - 更改所有用途的默认注释值

java - 在 Ant 中排除用于归档的测试类目录

java - 如何增加所有图标的大小而不是单独为 GUI 控制台 Java

java - 双向链表,删除第一次出现

sqlite - 如果在SQLite中使用外键,则创建表失败

javascript - Sqlite 中的插入查询问题?(变量插入)

启动 spring mvc 项目时出现 java.lang.NumberFormatException 异常

java - 如何在方法中使用 try{}-block-variable?

Android SimpleDateFormat 解析错误