Java Oracle驱动程序可以';在其他机器的罐子里找不到

Java Oracle驱动程序可以';在其他机器的罐子里找不到,java,oracle,jar,Java,Oracle,Jar,我正试图导出一个包含ojdbc14.jar的jar文件,以允许在我的机器之外执行。我可以用jar的当前导出成功地做到这一点,但只有在我的计算机上,当其他人尝试调用Class.forName时,它失败并出现错误:java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver 我已经看到了很多类似的问题,但是没有一个问题有确切的问题,解决方案也不起作用 类别: InputStream inputStream = JdbcConnect

我正试图导出一个包含ojdbc14.jar的jar文件,以允许在我的机器之外执行。我可以用jar的当前导出成功地做到这一点,但只有在我的计算机上,当其他人尝试调用
Class.forName
时,它失败并出现错误:
java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver

我已经看到了很多类似的问题,但是没有一个问题有确切的问题,解决方案也不起作用

类别:

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
更新:

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

更好地解释我是如何解决我的问题的,因为它与Jar中的Jar、可执行Jar等相关。

我不认为您可以在Jar中包含其他Jar(这就是您试图做的,不是吗?) 我怀疑它在您的机器上工作,因为ojdbc14.jar在您的类路径上的某个地方(即作为独立文件,而不是包含在您的jar中)

希望这有帮助
Nathan

Java无法从jar中的jar加载类。就这么简单。jar不能放在其他jar文件中。就这样?没有解决办法吗?有解决办法,而且都很难看。为什么不简单地压缩整个目录结构,其中包含一个简单的.bat/.sh文件,只需双击即可?有关如何使用jar文件和清单,请参阅。最初的要求是一个可执行的jar。请您将解决方案链接到其中一个(如果您有)?如果jar是可执行的,您可以避免使用.bat文件,但是您需要将其他jar文件放在主jar文件之外,而不是放在内部。我在之前的评论中已经链接到了教程。是的,这就是我要做的。但是如果我在清单中设置了类路径,并且驱动程序在jar中,为什么它仍然不能工作呢?