如何使用外部库编译Jar

时间:2011-09-12 16:56:38

标签: jar compilation jdeveloper

我刚接触stackoverflow,所以如果我误解了一些Q&amp; A规则我可以​​随意指出任何错误,而且对于我的英语,因为我不是英语母语人士。< / p>

现在,虽然我已经编程好几年了,但是我已经被迫在这个项目中使用旧版本的JDeveloper,我有一些初学者问题,因为我习惯了IDE做所有艰苦的工作。

我的目标是,将我的项目编译成jar并在服务器中执行它。

到目前为止,我让我的应用程序运行并运行我的IDE,即JDev 9.0.3.2(OLD)和Java版本是1.3.1_01,但是当我尝试编译为jar文件由于某种原因lib没有不来。

我的代码(部分是ofc):

Connection con = null;

public Depositos() throws Exception {

        System.out.println("Beginning ORACLE DB connection");

        try {
            String connstr="jdbc:oracle:thin:"+"@<hostname>"+":"+"<port>"+":"+"<SID>";
            System.out.println("connstr ok");

            Class.forName("oracle.jdbc.driver.OracleDriver");

            System.out.println("Class.forName ok");
            con = DriverManager.getConnection (connstr, "cic", "managercic");

            System.out.println("Connection successful");              
        } catch (ClassNotFoundException e) {
              throw new Exception("DB connection error "+e.getMessage());
        }

    }

我怀疑问题已经结束了,更准确地说是在这里:     “Class.forName(”oracle.jdbc.driver.OracleDriver“);”

我的程序是: 在Depositos.java文件夹

我跑了这个:

javac -verbose Depositos.java -classpath C:\oracle\ora92\jdbc\lib\classes12.jar

输出结果表明一切正常。

jar cfmv0 Depositos.jar MANIFEST.MF Depositos.class C:\oracle\ora92\jdbc\lib\classes12.jar

我的MANIFEST.MF包含:

Manifest-Version: 1.0
Created-By: Oracle JDeveloper 10.1.3.4.0
Main-Class: Depositos.Depositos

当我使用:

运行src文件夹中的代码时
java oic.OIC

我的输出是:

Beginning ORACLE DB connection
connstr ok
Exception in thread "main" java.lang.Exception: DB connection error oracle.jdbc.driver.OracleDriver
at Depositos.Depositos.<init>(Depositos.java:47)
at Depositos.Depositos.main(Depositos.java:98)

这使我得出结论,错误在我上面说的那一行。

而且我不明白我做错了什么,我从其他论坛上读了这么多帖子,我不知道什么是正确的举动。

我尝试了几种编译命令组合。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以将oracle jar添加到jar中,并在清单中放置一个“Class-path”属性。

Manifest-Version: 1.0
Created-By: Oracle JDeveloper 10.1.3.4.0
Main-Class: Depositos.Depositos
Class-path: <path to jar inside your jar>

但是从内存来看,如果您的jar已签名,您还需要在其中签名。