빌드를 사용하여 실행 가능한 jar 파일을 만들었습니다. 여기 jar 파일을 실행할 수 없습니다. NoClassDefFoundError 얻기
<target name="deploy" depends="compile">
<jar jarfile="${deploy.home}/${app.name}.jar" basedir="${build.home}">
<manifest>
<attribute name="Main-Class" value="abc.xyz"/>
</manifest>
</jar>
XYZ 호가 전체 프로그램을 실행하기위한 주요 방법이있다 ..
public static void main(String[] args) {
File buildFile = new File("build.xml");
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget(p.getDefaultTarget());
}
JAR 파일이 생성되고 successfuly. 발견되지
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/Project
at abc.xyz.main(xyz.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.Project
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
프로젝트 클래스 - 나는 등 java -jar appname.jar
을 실행하면 예외를 던지고있다. 거기에 ant.jar
.
하지만 난 그 작업을 잘 ABC 명령 프롬프트 자바에 단순히으로 abc.java
클래스를 실행할 때.
나를 기쁘게 도와주세요. 및 그 해결책. 하나 개 이상의 용기가 필요한 경우 항아리
<target name="deploy" depends="compile">
<jar jarfile="${deploy.home}/${app.name}.jar" basedir="${build.home}">
<manifest>
<attribute name="Main-Class" value="abc.xyz"/>
<attribute name="Class-Path" value="ant.jar"/>
</manifest>
</jar>
의 클래스 경로에
설명해 주시겠습니까? 그러나 xyz.java 클래스를 명령 프롬프트에서 간단히 실행하면 Java abc.java가 작동합니다. 두 클래스가 있습니까? 서로 전화하는거야? 두 가지 클래스의 전체 코드를 게시 할 수 있습니까 (재미없는 부분은 생략 함) 패키지 선언을 확인해야합니다 – Gianmarco
app-jar의 매니페스트에 선언 된 클래스 경로에 필수 라이브러리를 추가해야합니다. 응용 프로그램에 ant.jar이 필요한 경우 Java에 대해 알려야합니다. – Holger
Gianmarco에게 감사합니다. 오타 에러였습니다. 나는 편집했습니다. 오직 하나의 메인 클래스입니다. 패키지 문제가 없습니다. 일식에 그 일하는 벌금. – smriti