2017-01-05 1 views
1

Ich habe eine Java-Klasse namens Listenermain.java, die Abhängigkeiten zu externen Bibliotheken der Klasse a s unten ist.Java-Klasse kompiliert nicht über cmd

import Luxand.FSDK; 

import php.java.bridge.JavaBridgeRunner; 


public class Listenermain { 

public static final String JAVABRIDGE_PORT = "1699";//8080 
static final JavaBridgeRunner runner 
     = JavaBridgeRunner.getInstance(JAVABRIDGE_PORT); 

/** 
* @param args the command line arguments 
* 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 
    try { 
     System.loadLibrary("facesdk"); 
     int res = FSDK 
       .ActivateLibrary("pZo9jhbhbybgvbh"); 
     FSDK.Initialize(); 
     FSDK.SetFaceDetectionParameters(true, true, 384); 
     FSDK.SetFaceDetectionThreshold(5); 

     if (res == FSDK.FSDKE_OK) { 
      System.out.printf("FaceSDK activated", "FaceSDK activated\n"); 
     } else { 
      System.out.printf("Error activating FaceSDK: ", res + "\n"); 
     } 
    } catch (java.lang.UnsatisfiedLinkError e) { 
     System.out.printf("exception ", e.getMessage()); 
    } 
    try { 
     runner.waitFor(); 
    } catch (Exception ex) { 
     System.out.printf("Error: ", ex.getMessage() + "\n"); 
    } 
    // System.exit(0); 
} 

} 

ich kompilieren meine Klasse mit folgenden auf cmd Zeilensyntax

javac -classpath ".;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\JavaBridge.jar;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\FaceSDK.jar;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\jna.jar" Listenermain.java 

und es keine Fehler spucken, aber wenn ich versuche, den Code über die Kommandozeilenschnittstelle wieder mit dieser Syntax laufen

`java -classpath . Listenermain` 

ich erhalte den Fehler unter

Exception in thread "main" java.lang.NoClassDefFoundError: php/java/bridge/JavaBridgeRunner at Listenermain.(Listenermain.java:19) Caused by: java.lang.ClassNotFoundException: php.java.bridge.JavaBridgeRunner

So bin ich verwirrt, warum die Listenermain.class nicht mit den Abhängigkeiten kompiliert wurde, die ich spezifizierte.

+0

Sie müssen auch die abhängigen Bibliotheken Pfad im Startbefehl erwähnen, sonst JVM kann die Abhängigkeit nicht lösen. –

Antwort

1

Wenn Sie das Programm ausführen, müssen Sie auch den Klassenpfad angeben, um Klassenabhängigkeiten aufzulösen.

Versuchen wie folgt aus:

java -classpath ".;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\JavaBridge.jar;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\FaceSDK.jar;C:\Users\daviestobialex\Workarea\openshiftmatcher\libs\jna.jar" Listenermain 
+0

Gern geschehen :) – davidxxx