2017-12-12 18 views
0

Java 응용 프로그램을 실행하려면 Ant를 사용하고 있습니다. 나는 main을 다른 라이브러리를 사용하는 Subscriber 클래스에있다. 그래서 Controller.Subscriber을 실행하고 싶었습니다. 하지만 다음과 같은 버그를 얻을 :Ant 파일이 클래스 파일을 통해 Java 응용 프로그램을 실행할 수 없습니다.

<project default="run"> 
    <target name="run"> 
     <java classname="Controller.Subscriber" fork="true"> 
      <classpath> 
       <pathelement path="target/classes"/> 
      </classpath> 
     </java> 
    </target> 
</project> 

구독자 클래스 경로 : 대상/클래스/컨트롤러/Subscriber.class

무엇 오전

[java] Error: A JNI error has occurred, please check your installation and try again 
[java] Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/paho/client/mqttv3/MqttCallback 
[java]  at java.lang.Class.getDeclaredMethods0(Native Method) 
[java]  at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
[java]  at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
[java]  at java.lang.Class.getMethod0(Class.java:3018) 
[java]  at java.lang.Class.getMethod(Class.java:1784) 
[java]  at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
[java]  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
[java] Caused by: java.lang.ClassNotFoundException: org.eclipse.paho.client.mqttv3.MqttCallback 
[java]  at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
[java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[java]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
[java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[java]  ... 7 more 
[java] Java Result: 1 

내 개미 파일은 다음과 같다 내가 잘못하고있어? Java 프로그램을 실행할 수 있도록 클래스 파일에서 jar 파일을 먼저 만들어야합니까? 아니면 클래스 파일을 실행할 수 있습니까? 또는 내 java 명령의 매개 변수를 놓치고 있습니까?

는 또한 명시 적으로 클래스 경로를 제공하여 다음과 같은 개미 파일을 시도 :

<project default="run"> 
     <target name="run"> 
      <java classname="Controller.Subscriber" fork="true" classpath="classpath"> 
       <classpath> 
        <pathelement path="target/classes"/> 
       </classpath> 
      </java> 
     </target> 
     <path id="classpath"> 
      <fileset dir="target"> 
        <include name="*.jar"/> 
      </fileset> 
     </target> 
    </project> 

하지만 같은 오류 메시지가 무엇입니까.

답변

0

나는이 문제에 대한 해결책을 찾았습니다 : classpath 대신 classpathref을 사용해야합니다. 어떤 이유로 인해 classpath="classpath""classpath" 아이디를 읽지 않습니다. 그러나 classpathref이 문제를 해결했습니다.