我有2个.jar文件。主jar文件是我整个项目的jar文件,另一个.jar文件是MySql JDBC Connector。
现在基本上发生了什么,当我构建项目时,我有一个主要的.jar文件,除了MySql JDBC Connector .jar文件在NetBeans中构建时,它位于主jar文件中。
现在,当我从NetBeans中运行项目时,可以在我所拥有的src / com / game / mysql文件夹中找到MySql JDBC驱动程序。但是当我构建项目时,Java应用程序无法找到JDBC主jar文件中的驱动程序。
当我用WinRar打开主jar文件时,我可以看到JDBC jar文件仍在其/ com / game / mysql /文件夹中。但为什么Java应用程序无法访问它?
我听说Java中不支持嵌套的.jar文件所以我认为这可能是原因,虽然我不确定这是否正确。有没有办法可以让应用程序在主jar文件中找到JDBC .jar文件?
此外,我在NetBeans中完成了这项工作,您可以通过右键单击项目添加.jar文件 - >属性 - >图书馆 - >添加文件夹/ Jar。这是什么使它在NetBeans运行中工作,但仍然不是App构建。
答案 0 :(得分:0)
我听说Java
不支持嵌套的.jar文件
更准确地说,JAR文件中的类(在主JAR中打包为子JAR)确实默认为主JAR中的类不可见。
你基本上有两个选择:
使用2个松散的JAR(your.jar
和mysql.jar
发送您的应用程序,并在{{1}的mysql.jar
条目中定义Class-Path
的相对路径} MANIFEST.MF
的文件。
your.jar
当您将两个JAR放在同一个文件夹中并按Class-Path: mysql.jar
执行your.jar
时,它就能正常工作。
让您的IDE重新打包java -jar your.jar
内所有松散的mysql.jar
类,或者添加一个特殊的类加载器,它预加载任何嵌入式JAR的类。既然我不做Netbeans,我不知道它是否支持Netbeans,如果是的话,我怎么做。但是,在Eclipse中,这绝对是可能的。另请参阅this answer。