我正在尝试导出包含ojdbc14.jar的jar文件,以允许在我的机器外执行。我可以成功地使用我的jar的当前导出,但仅在我的计算机上,当其他人尝试失败时出现错误:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
当它试图调用Class.forName
时
我在SO方面看到了许多类似的问题,但没有一个问题似乎有确切的问题,解决方案也没有用。
类别:
InputStream inputStream = JdbcConnection.class.getClassLoader().getResourceAsStream("properties/jdbc.properties");
try {
PROPERTIES.load(inputStream); //Load the jdbc properties
//System.out.println(properties.getProperty("jdbc.driverClassName")); <-- this prints out the correct output`
Class.forName(PROPERTIES.getProperty("jdbc.driverClassName")).newInstance(); //Load the oracle driver
清单:(我的ojdbc14.jar位于lib中,但是如果只包含“ojdbc14.jar”,jar只能在我的本地机器上运行,其他的jar没有提供的路径问题,不确定这是否重要)
Manifest-Version: 1.0
Main-Class: JdbcConnection
Class-Path: lib/ojdbc14.jar ojdbc14.jar extrsrcs/kxml2-2.3.0.jar extrsrcs/xstream-1.4.2.jar src/properties/jdbc.properties
更新
This question更好地解释了我如何解决我的问题,因为它与Jar-within-Jars,可执行jar等有关。
答案 0 :(得分:1)
我认为你不能在罐子里包含其他罐子(这是你想要做的不是吗?) 我怀疑它正在你的机器上工作,因为ojdbc14.jar在你的类路径上某处(即作为独立文件,而不是包含在你的jar中)
希望这会有所帮助 森