Я включаю внешний .jar, но меня просят импортировать его библиотеки - PullRequest
0 голосов
/ 02 июня 2011

Мне удается включить ojdbc14_g.jar в мой проект, но меня просят импортировать OracleConnectionPoolDataSource , который включен в ojdbc14_g.jar.

Вот мой код:

<path id="myclasspath">
    <fileset dir="lib/">
        <include name="*.jar"/>
    </fileset>
</path>


<pathconvert property="lib.project.manifest.classpath" pathsep=" ">
  <path refid="myclasspath"/>
  <flattenmapper/>
</pathconvert>


<target name="compile" description="compile" depends="init">
    <javac srcdir="${sources}"  destdir="${classes}" >
        <classpath refid="myclasspath"/>
    </javac>
</target>


<target name="packaging" description=" jar construction" depends="compile" >
    <echo message="construction" />
    <jar destfile="${dist}/Integration.jar" basedir="${classes}">   
        <fileset dir=".">
            <include name="lib/ojdbc14_g.jar" /> 
        </fileset>
        <manifest>
            <attribute name="Main-Class" value="packRMI.ServerRMI" />
            <attribute name="Class-Path" value="${lib.project.manifest.classpath}"/>
        </manifest>
    </jar>
</target>

<target name="run" description="execution" depends="packaging">
    <java jar="${dist}/Integration.jar" fork="true"/>
</target>

Но когда он запускается, это дает мне исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/pool/OracleConnectionPoolDataSource

Поскольку следующий импорт не может быть выполнен:

import oracle.jdbc.pool.OracleConnectionPoolDataSource;

Как я могу решить эту просьбу

1 Ответ

0 голосов
/ 03 июня 2011

Похоже, ваша проблема в том, что вы включаете файл ojdbc14_g.jar непосредственно в файл jar приложения.Загрузчик классов java не может найти классы в jar-файлах, вложенных следующим образом.

Если вы хотите создать один финальный jar-файл, то вместо добавления самого ojdbc14_g.jar в ваш jar-файл вы можете попробовать добавить его содержимое вваш jar.

В вашем файле сборки, где вы создаете свой jar, измените это:

<fileset dir=".">
  <include name="lib/ojdbc14_g.jar" /> 
</fileset>

на следующее:

<zipfileset src="lib/ojdbc14_g.jar" />

Возможно, вам придется поискатьиз-за конфликтов между содержимым ojdbc_g.jar и вашими файлами, в частности манифестом, я не уверен, как ant будет с ними работать.

В качестве альтернативы, вы можете оставить jar ojdbc отдельно от jar приложения,и сослаться на него, используя атрибут Class-Path вашего манифеста (вы, похоже, уже делаете это для некоторых других библиотек).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...