2014-10-20 3 views
0

개미와 그 컴파일 벌금을 사용하여 귀를 만들었습니다. 그러나 배포 할 때 weblogic 서버 로그에 noclassdeffound 오류가 발생합니다. 그래서 서버의 시작 스크립트에 라이브러리 (jar)를 추가했습니다. 즉 서버 java 클래스 경로가 제대로 작동합니다.manifest.mf 클래스 경로를 사용하는 런타임 클래스 경로

개미 빌드를 사용하여이 런타임 클래스 경로 문제를 해결하는 방법을 알려주십시오. manifest.mf 파일에 classpath를 추가하는 것이 도움이된다고 가정합니다. 지금까지 내 build.xml 파일은 다음과 같습니다

<?xml version="1.0"?> 
<project name="xxx APP Check" default="all" basedir="."> 


<target name="init"> 
<property name="software.version" value="1.0"/> 
<property name="user.name" value="usrnme"/> 
<property name="dirs.base" value="${basedir}"/> 
<property name="classdir" value="${dirs.base}/build/src"/> 
<property name="src" value="${dirs.base}/src"/> 
<property name="mf" value="${dirs.base}/src/META-INF"/> 
<property name="jar" value="${dirs.base}/build/jar"/> 
<property name="web" value="${dirs.base}/web"/> 
<property name="deploymentdescription" value="${dirs.base}/build/deploymentdescriptors"/> 

<property name="warFile" value="xxxappchk.war"/> 
<property name="earFile" value="xxxxappchk.ear"/> 


<property name="earDir" value="${dirs.base}/build/ear"/> 
<property name="warDir" value="${dirs.base}/build/war"/> 
<property name="srcDir" value="${dirs.base}/build/src"/> 


<!-- Create Web-inf and classes directories --> 
<mkdir dir="${warDir}/WEB-INF"/> 
<mkdir dir="${warDir}/WEB-INF/classes"/> 
<mkdir dir="${warDir}/WEB-INF"/> 
<mkdir dir="${warDir}/WEB-INF/lib"/> 
<mkdir dir="${warDir}/WEB-INF/classes"/> 

<!-- Create Meta-inf and classes directories --> 
<mkdir dir="${warDir}/META-INF"/> 
<mkdir dir="${earDir}/META-INF"/> 


</target> 

<!-- Main target --> 
<target name="all" depends="init,build,buildWar,buildEar,clean"/> 


<!-- Compile Java Files and store in /build/src directory --> 
<target name="build" > 
<path id="3rdparty.jar.path"> 
     <fileset dir="${jar}"> 
     <include name="*.jar" /> 
    </fileset> 

</path> 
<javac srcdir="${src}" includeantruntime="false" destdir="${classdir}" debug="true" includes="**/*.java" > 
<classpath> 
     <path refid="3rdparty.jar.path"/> 
</classpath> 
</javac> 
</target> 

<!-- Create the War File --> 
<target name="buildWar" depends="init"> 
<copy todir="${warDir}/WEB-INF/classes"> 
<fileset dir="${classdir}" includes="**/*.class" /> 
</copy> 

<jar destfile="${warDir}/WEB-INF/lib/xxxx-appcheck.jar" 
     basedir="${warDir}/WEB-INF/classes" 
/> 
<echo message="Hyperion appcheck jar created."/> 

<copy todir="${warDir}/WEB-INF/classes/com/ca/xxxx_appcheck"> 
<fileset dir="${src}" includes="**/*.java" /> 
</copy> 


<copy todir="${warDir}/WEB-INF"> 
<fileset dir="${deploymentdescription}" includes="web.xml" /> 
</copy> 

<copy todir="${warDir}/WEB-INF/lib"> 
<fileset dir="${jar}" includes="*.jar" /> 
</copy> 


<copy todir="${warDir}"> 
<fileset dir="${web}" includes="**/*.*" /> 
</copy> 

<!-- Create war file and place in ear directory --> 
<jar jarfile="${earDir}/${warFile}" basedir="${warDir}" /> 


</target> 


<!-- Create the War File --> 
<target name="buildEar" depends="init"> 
<copy todir="${earDir}/META-INF"> 
<fileset dir="${deploymentdescription}" includes="application.xml" /> 
</copy> 

<!-- Create ear file and place in ear directory --> 
<jar jarfile="${dirs.base}/${earFile}" basedir="${earDir}" /> 
</target> 

    <target name="clean" description="Delete all generated files"> 

     <delete dir="${srcDir}" failonerror="false"/> 
     <delete dir="${earDir}" failonerror="false"/> 
     <delete dir="${warDir}" failonerror="false"/> 
     <echo message="Deleted the temp directories src, war, ear"/> 
     <mkdir dir="${earDir}"/> 
     <mkdir dir="${warDir}"/> 
     <mkdir dir="${srcDir}"/> 
     <echo message="created the temp directories src, war, ear"/> 

    </target> 

</project> 
+0

누락 된 jar 파일을 WAR/EAR 파일의 "WEB-INF/lib"디렉토리에 추가해야합니다. 런타임시 응용 프로그램의 클래스 경로에 자동으로 추가됩니다. –

+0

모든 병은 이미 전쟁에서 WEB-INF/lib에 추가되었습니다. 하지만 여전히 런타임 클래스 경로 문제가 나타납니다. 미리 감사드립니다. –

답변

0

보통은 애플리케이션 클래스 패스에 추가하여 항아리를 만들기 위해 MANIFEST.MF에 아무것도를 추가 할 필요가 없습니다 조언을 주시기 바랍니다.

  1. 웹 응용 프로그램 (WAR) 파일은 EAR 바로 아래에 있어야합니다.
  2. 전체 종속성 (JAR)은 EAR의 APP-INF/lib 디렉토리에 있어야합니다.
  3. WAR 파일 WEB-INF/lib 디렉토리 아래에 웹 응용 프로그램 자체의 종속성이 있습니다. build.xml 살펴보면, 거기에 있어야합니다.

개미 스크립트를 변경하기 전에 이러한 필수 조건을 확인하고 Weblogic 오류 로그에서 스택 추적을 제공하십시오.

관련 문제