2011-06-02 61 views
0

我成功了,包括ojdbc14_g.jar到我的项目,但我要求导入OracleConnectionPoolDataSource至极包括在ojdbc14_g.jar。我包括外部.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 

,因为下列进口不能做:

进口oracle.jdbc.pool.OracleConnectionPoolDataSource;

我怎样才能解决这一PLS

回答

0

它看起来像你的问题是,你直接包括ojdbc14_g.jar文件在应用程序的jar文件。 java classloader无法在嵌套像这样的jar文件中找到类。

如果你想产生一个最终的jar,那么不要把ojdbc14_g.jar本身添加到你的jar中,你可以尝试将它的内容添加到你的jar中。

在构建文件,在其中创建您的罐子,改变这种:

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

这样:

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

您可能需要寻找出ojdbc_g的内容之间的冲突。 jar和你的文件,特别是清单,我不知道ant如何处理它们。

或者,您可以将ojdbc jar从应用程序jar中分离出来,并使用清单的Class-Path属性引用它(您似乎已经在为其他某些库执行此操作)。