Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 我包括一个外部.jar,但我';m被要求导入其LIB_Ant_Jdbc_Import_Jar_Oracle10g - Fatal编程技术网

Ant 我包括一个外部.jar,但我';m被要求导入其LIB

Ant 我包括一个外部.jar,但我';m被要求导入其LIB,ant,jdbc,import,jar,oracle10g,Ant,Jdbc,Import,Jar,Oracle10g,我成功地将ojdbc14_g.jar包含到我的项目中,但我被要求导入包含在ojdbc14_g.jar中的OracleConnectionPoolDataSource 这是我的密码: <path id="myclasspath"> <fileset dir="lib/"> <include name="*.jar"/> </fileset> </path

我成功地将ojdbc14_g.jar包含到我的项目中,但我被要求导入包含在ojdbc14_g.jar中的OracleConnectionPoolDataSource

这是我的密码:

<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>

但当它运行时,它会给我一个例外:

线程“main”java.lang.NoClassDefFoundError中出现异常:oracle/jdbc/pool/OracleConnectionPoolDataSource

因为无法执行以下导入:

导入oracle.jdbc.pool.OracleConnectionPoolDataSource


如何解决这个问题?

看起来您的问题是您将ojdbc14_g.jar文件直接包含在应用程序jar文件中。java类加载器在这样嵌套的jar文件中找不到类

如果您想要生成一个最终的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属性引用它(您似乎已经在为其他一些LIB这样做了)