2011-08-30 3 views
0

저는 Apache Ant 초보자이며 실행 작업으로 빌드 파일을 만들고 싶습니다. 어떻게이 두 요소를 추가 할 수 있습니다 : 작업 실행은 sys.ctx.doodle.Start 클래스가아파치 개미의 Java 작업에 대한 문제

내 질문 인 doodle.jar에 위치한

java -classpath C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar sys.ctx.doodle.Start 

이 statemenet 다음 명령 줄을 실행해야 classpath? 나는 시도 다음

<target name="run"> 
    <java jar="C:/tmp/SYS/doodle.jar" fork="true"> 
    <classpath> 
     <pathelement location="C:/tmp/SYS/doodle.jar"/> 
     <pathelement path="sys.ctx.doodle.Start"/> 
    </classpath> 
    <classpath> 
     <pathelement location="C:/tmp/SYS/CTX.jar"/> 
    </classpath> 
    </java> 
</target> 

를하지만 때 나에게 문제가 될 수있는 java.lang.NoClassDefFoundError가

어떤 생각을 던져 실행?

답변

2

명령 줄 경로를 Ant java task classpath 속성에 직접 바꿀 수 있습니다. Ant는 세미콜론으로 구분 된 jar 이름으로 구성된 인식을 처리해야합니다.

<java classpath="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar" ... > 

또는 당신은 당신이 현재 가지고있는 중첩 된 요소로 지정할 수 있습니다

<java ... > 
    <classpath> 
     <pathelement path="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar" /> 
    </classpath> 
</java> 

sys.ctx.doodle.Start 당신이 실행하려는 클래스의 이름과 같은 인수. classname 특성을 사용하여 java 작업에 전달하십시오.

<java classpath="C:/tmp/SYS/doodle.jar;C:/tmp/SYS/CTX.jar" 
     classname="sys.ctx.doodle.Start" /> 

jar 속성은 그 항아리에 포함 된 Main-Class를 실행하려는 경우에만 사용해야합니다 : 클래스 패스에 그 퍼팅에 연결됩니다.

0

<classpath> 개의 요소가 너무 많습니다. 당신은 무엇이 필요 <classpath> 요소를 다음과 같이 하나입니다 :

<classpath> 
     <pathelement location="C:/tmp/SYS/doodle.jar"/> 
     <pathelement location="C:/tmp/SYS/CTX.jar"/> 
    </classpath> 

당신은이 같은 <java> 태그 변경해야합니다 : 사용하여 클래스 경로 참조에 여러 단지를 추가하려면

<java jar="C:/tmp/SYS/doodle.jar" fork="true" classname="sys.ctx.doodle.Start"> 
2

Fileset는 것 같다 깨끗한 방법은해야 할 일이

예 :

<classpath> 
    <pathelement path="${classpath}"/> 
    <fileset dir="lib"> 
    <include name="*.jar"/> 
    </fileset> 
</classpath> 

lib 디렉토리 내의 모든 jar를 classpath에 추가합니다.

+0

개미 이것은 더 나은 접근 방법 일 수 있습니다. lib 디렉토리에 classpath에 있어야하는 libs를 추가 한 다음 위의 코드를 build.xml에 넣습니다. – Mohyt