2011-06-02 40 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屬性引用它(您似乎已經在爲其他某些庫執行此操作)。