Sto usando weka per C # e sto provando a portare il weka.jar in c # -dll usando IKVM. Il tutorial può essere trovato Qui.
Ora, ecco quello che ho ottenuto nel mio bin
directory del programma C #:
weka.dll - generato da IKVM
IKVM.OpenJDK.Core.dll - dalle librerie IKVM
JVM.dll - dalle librerie IKVM
e java / bin è nella mia variabile PATH.
Ma il programma si rompe a
weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));
e l'errore è in fase di inizializzazione di java.io.File
Penso che sia perché alcune DLL sono mancanti in C # / bin
Posso risolverlo copiando tutte le DLL relative a IKVM e Java nella directory C # / bin, tuttavia è così brutto.
Ora arriva la mia domanda: quali librerie di runtime fa a Java ==IKVM==> C#
il programma ha davvero bisogno?
Ho copiato tutto ciò che è relativo nel C # / bin e ha funzionato.
Ma credimi che non voglio farlo.
risposte:
1 per risposta № 1Mai senza di te puoi rispondere alla domanda cheparti di Java / IKVM richieste dal programma. Sei l'unica persona che conosce il tuo programma. Un piccolo programma richiede circa il 50% delle DLL di IKVM. Questo perché le dipendenze in Java sono molto grandi.
Il minimo è IKVM.OpenJDK.Core.dll e IKVM.Runtime.dll. Ma non aggiungerei dll by dll. Altrimenti lo rimuoverò passo dopo passo. È possibile utilizzare i nomi dei file dll o Ilspy per vedere quale DLL non è probabile.
Ecco alcuni che sono rari e per i quali viene utilizzato. Questo può darti un suggerimento:
- IKVM.OpenJDK.Tools.dll - Compilatore Java
- * .exe - diversi strumenti
- IKVM.OpenJDK.Jdbc.dll - API SQL e database
- IKVM.OpenJDK.Corba.dll - Corba
- IKVM.OpenJDK.Beans.dll - Plain Old Beans
- ikvm-native-win32 - *. dll, JVM.dll, IKVM.Runtime.JNI.dll - roba nativa, se il proprio codice Java utilizza già una dll
- IKVM.OpenJDK.Naming.dll - Servizi di denominazione come LDAP, DNS
- IKVM.AWT.WinForms.dll, IKVM.OpenJDK.SwingAWT.dll - Immagini, caratteri, GUI