Java 带有sqlite驱动程序的Jar可执行文件

Java 带有sqlite驱动程序的Jar可执行文件,java,sqlite,jar,Java,Sqlite,Jar,我编写了一个代码,它连接到我的sqlite驱动程序,该驱动程序位于CLASSPATH中,并读取一些数据库文件。我想创建一个可执行文件,它可以在没有sqlite驱动程序的计算机上使用 如果我这样做: jar cvfe exec.jar main_class 使用运行时,我将获得“未找到类:org.sqlite.JDBC” java -jar exec.jar 我应该怎么做才能使可执行文件工作 编辑: 我不知道这是否有什么区别,但这是我使用的JDBC驱动程序: 这是文件: C:\Windows\

我编写了一个代码,它连接到我的
sqlite
驱动程序,该驱动程序位于
CLASSPATH
中,并读取一些数据库文件。我想创建一个可执行文件,它可以在没有
sqlite
驱动程序的计算机上使用

如果我这样做:

jar cvfe exec.jar main_class
使用运行时,我将获得“未找到类:org.sqlite.JDBC”

java -jar exec.jar
我应该怎么做才能使可执行文件工作

编辑: 我不知道这是否有什么区别,但这是我使用的JDBC驱动程序:

这是文件:

C:\Windows\System32>jar /?
Illegal option: /
Usage: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
所以我认为你需要的命令是:

jar cvfe exec.jar main_class main_class

您需要将库包含在JAR中。也许您不知道这一点,但JAR文件只是ZIP文件,所以您可以轻松地更改其内容。这里有一些关于如何做的快速说明。假设您的JAR文件名为
exec.JAR
,并且要包含的库的JAR(下载的JAR)是
driver.JAR

  • 将文件名从
    exec.jar
    更改为
    exec.zip
  • exec.zip的所有内容解压缩到文件夹
    exec/
  • 将库文件名从
    driver.jar
    更改为
    driver.zip
  • driver.zip的所有内容解压缩到文件夹
    driver/
  • driver/
    的内容复制到
    exec/
    中,但不要复制
    META-INF
    文件夹。如果弹出窗口询问是否可以合并文件夹,请单击“是”
  • exec/
    中的所有文件压缩到
    exec.zip中
  • exec.zip
    重命名为
    exec.jar
    (替换原来的)

  • 您可以使用此方法在JAR中包含任何java库。

    您是否使用maven/gradle构建JAR?我不能从命令行执行此操作吗?这应该很容易,但我找不到任何你应该在罐子里包含驱动程序的地方。你在这么做吗?不。我不知道怎么做。但是我如何让SQLite与可执行文件一起工作呢?我想你只需要向上面的命令传递一个-classpath arg,该命令包含SQLite.jar文件的位置。当然,这是一个问题,因为您没有提取可执行文件.jar,因此无法加载资源。有一种方法可以处理它,只是不知道确切的方法。有一个Maven插件可以做到这一点。只有几个问题。驱动程序只有一个jar文件。这就是org/sqlite文件夹中应该包含的内容吗?还是必须提取driver.jar?我两个都做了,但是当我尝试使用最终的exec.jar文件时,它会说它已损坏。在里面,你会发现一个名为
    org
    的文件夹。在
    org
    中,您将找到一个名为
    sqlite
    的文件夹。将
    sqlite
    的所有内容复制到您的
    exec.jar/org/sqlite
    中。我更新了答案,希望能让答案更清楚。实际上,您所需要做的就是将库jar与您的jar合并。它现在可以工作了。腐败不是一个严重的问题。谢谢。如果我在编译后将org/sqlite添加到我的java目录中,并键入jar cvfe exec.jar main_class*.class org,也可以使用它