我在 Windows 中制作了一个使用 sqlite 数据库的 java swing 应用程序。我在 Ubuntu Linux 上移动了我的应用程序,下载了最新的 jdk 和 jre。当我从 Netbeans 运行我的应用程序时,一切都很好,但是当我从 dist 文件夹(右键单击 jar 文件夹并选择使用 jre7 运行)运行它时,应用程序启动但未加载来自 sqlite 数据库的数据。首先,我认为这是关于在我的 sqlite 数据库上授予 Ubunty 内部权限以读取和写入数据(右键单击 sqlite 数据库文件夹并单击 Access option set to read and write and set ,并使文件能够作为程序) 。我该怎么做才能使我的 sqlite 数据库能够在 Netbeans Ide 之外加载。
1 回答
显示您的错误消息 - AlexR 14 分钟前没有错误消息,现在我尝试从控制台运行我的应用程序,它工作正常,但是当我通过鼠标单击运行时它不会加载 sqlite 数据库,这是一个 Ubunty 的东西。– Jovo Krneta 11 分钟前
好的,这说明了一些事情。
当您单击 jar 文件时,您正在使用命令行运行应用程序,例如:
java -jar yourjar.jar
JVM 打开你的MANIFEST.MF
,确定主类和类路径并运行你的应用程序。我相信在您的情况下,无法正确识别类路径。
这是解释如何定义它的文档: https ://blogs.oracle.com/olaf/entry/jdev_including_a_classpath_in
类路径
Class-Path 标记可用于指定应用程序需要成功运行的库列表。您可以像其他任何方式一样指定类路径,但使用空白字符 (' ') 作为路径分隔符。IE。对于 Un*x/Linux 或 Win 环境,分别没有冒号 (':') 或分号 (';')。要在 MANIFEST.MF 中指定 Class-Path 标记,您需要包含如下一行: Class-Path: lib/ojdbc14.jar lib/log4j.jar
我相信,由于您使用 IDE 在 windows 上创建了可执行的 jar,因此您的类路径是使用 windows 特定的分隔符定义的;
。检查这个事实,如果这是正确的,用独立于平台的空格字符替换它" "
。
例如,如果您的类路径定义为Class-Path: one.jar;two.jar
将其替换为Class-Path: one.jar two.jar
但是,如果不是这种情况,请检查路径。驱动程序 jar 的路径对 ubuntu 无效吗?您可能使用反斜杠还是绝对路径?
检查所有这些东西。相信你会很快发现问题的。99% 是你的问题出在类路径上。