Ich habe ein sehr kleines und einfaches HelloWorld Programm in Java erstellt (hat Interface und in der Klasse hat system.lang.out.println ("Hallo Welt"))). Ich habe es mit Proxy-Gen verpackt. Nun, da ich versuche, es zu C# zu befestigen (gehen durch meCalc Beispiel) bekomme ich folgende Fehlermeldung:jni4net C# mit java in jni4net java.lang.ClassNotFoundException
Unhandled Exception: net.sf.jni4net.jni.JNIException: Can't load java class for dt09120958.HelloWorld09120958 from classLoader [email protected] ---> java.lang.ClassNotFoundException: dt09120958.HelloWorld09120958 at net.sf.jni4net.jni.JNIEnv.ExceptionTest() at net.sf.jni4net.jni.JNIEnv.CallObjectMethodPtr(IJvmProxy obj, MethodId methodIdNative, Value[] args) at java.lang.ClassLoader.loadClass(String par0) at net.sf.jni4net.utils.Registry.LoadClass(String name, ClassLoader classLoader, JNIEnv env) --- End of inner exception stack trace --- at net.sf.jni4net.utils.Registry.LoadClass(String name, ClassLoader classLoader, JNIEnv env) at net.sf.jni4net.utils.Registry.RegisterClass(RegistryRecord record, ClassLoader classLoader, JNIEnv env) at net.sf.jni4net.utils.Registry.BindJvm(RegistryRecord record, ClassLoader classLoader, JNIEnv env) at net.sf.jni4net.utils.Registry.BindJvm(RegistryRecord record, JNIEnv env) at net.sf.jni4net.utils.Registry.RegisterType(Type type, Boolean bindJVM, JNIEnv env) at net.sf.jni4net.utils.Registry.RegisterAssembly(Assembly assembly, Boolean bindJVM) at net.sf.jni4net.Bridge.RegisterAssembly(Assembly assembly) at netdt09120958.Program.Main(String[] args)
mein C# -Code:
static void Main(string[] args)
{
var bridgeSetup = new BridgeSetup();
bridgeSetup.AddAllJarsClassPath(".");
Bridge.CreateJVM(bridgeSetup);
Bridge.RegisterAssembly(typeof(HelloWorld09120958).Assembly);
IHelloWorld09120958 calc = new HelloWorld09120958();
calc.SayHello();
Console.ReadKey();
}
Warum ist das so? Was mache ich falsch und wie kann ich es reparieren?
Was ist Ihr Java-Paketnamen beheben könnte helfen? Ich denke, dass der Fehler von "Bridge.RegisterAssembly" stammte, das auf falschen Paketnamen/Klassennamen verweist. –
ja, du hast recht, es scheitert dort. Mein Paketname ist: dt09120958 Wenn ich es zu Paketnamen ändere, bekomme ich: 'dt09120958' ist ein 'Namespace' aber wird wie ein 'Typ' verwendet – aura
Wenn Sie sicher sind Java Paketname & Klassenname 'dt09120958.HelloWorld09120958 'ist korrekt im richtigen Verzeichnis platziert, überprüfen Sie' JAVA_HOME' & Klassenpfadkonfiguration. Verwenden Sie die 'java -version'-Befehlszeile, um die aktuelle Java-Version zu ermitteln, die Sie verwenden. Und was ist mit 'Bridge.RegisterAssembly (typeof (dt09120958.HelloWorld09120958) .Assembly);'? –