从 netbeans 创建后将可执行 jar 文件获取到 运行

Getting an executable jar file to run after creation from netbeans

我的应用程序中包含一些已添加到库中的 jar 文件 在 net beans 中,这些可以被读取和使用

我试图通过清理和构建在 netbeans 中创建一个可执行文件,并且我在构建打包集中拥有所有必要的属性,但是当我尝试双击创建的 jar 时,没有任何反应。它应该 运行 来自我的 Main class

的罐子

现在我尝试转到 cmd 终端并从那里使用:

java -jar myapp.jar 

我添加了 3 个不同的 jar,包括 sqlite-jdbc3.8.7、AbsoluteLayout、miglayout

但返回的是:

Exception in thread "main" java.lang.RuntimeException: Could not load SQLite JDBC driver
        at myapp.database.DatabaseConProvider.<init>(DatabaseConPr
ovider.java:18)
        at myapp.presenter.AppPresenter.<init>(AppPresenter.java
:32)
        at myapp.Main.main(Main.java:17)
Caused by: java.lang.ClassNotFoundException: org.sqlite.JDBC
        at java.net.URLClassLoader.run(Unknown Source)
        at java.net.URLClassLoader.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at myapp.database.DatabaseConProvider.<init>(DatabaseConPr
ovider.java:16)
        ... 2 more

问题好像是无法访问已经添加到项目中的jar文件,因为一旦我执行clean并构建项目中的/dist文件夹只有myapp.jar但是还应该有 README.txt 和一个包含所有库的 lib 文件夹。如所见:

http://netbeanside61.blogspot.co.uk/2009/08/making-executable-desktop-application.html

我正在使用 windows 8 和 netbeans 8.0.2

您如何管理您的应用程序依赖项?我鼓励您不要简单地 "add jars to your netbeans" - 使用某种 project/dependency 管理工具 - Maven or Gradle

然后,如果是 Maven,请检查此答案:

将您的应用程序移植到 maven/gradle 项目不会花费太多时间(但不幸的是,学习一种工具肯定会......)并且您会获得很大的灵活性。

您可以使用资源管理器访问 .jar 文件的结构。 (或将扩展名 .jar 重命名为 .zip)

  • 可能性 1
    看看 MANIFEST.MF 有没有类似
  • 的东西

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.7.0_51-b13 (Oracle Corporation)
Class-Path: lib/sqlite-jdbc-3.8.7.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: Find

此处 sqlite-jdbc-3.8.7.jar 在 GUIFormExamples.jar

外的 lib/ 文件夹中

  • 可能性 2
    sqlite-jdbc-3.8.7.jar 的内容添加到 appxx.jar


  • 案例一
    将 lib 文件夹放在 appxx.jar 所在的同一文件夹中

  • 案例二 必须开箱即用