2017-01-12 3 views
2

Ich versuche, ein benutzerdefiniertes Fettglas zu importieren, das eine Abhängigkeit von Guava-19.0 oder höher hat. Die Matlab-Version, die ich benutze, hat bereits ein Guava-Jar im Klassenpfad, aber es ist Version 15.0. Ich habe versucht, das Glas von Matlab classpath.txt Datei zu entfernen, aber Matlab wird nicht starten, wenn ich dies tue. Ich habe auch versucht, eine javaclasspath.txt Datei in meinem Arbeitsverzeichnis mit den Linien zu schaffen:MATLAB 2016 neue Guava-Version verwenden

<before> 
path/to/myjar.jar 

Aber das nicht Matlab entweder nicht starten lassen. Wenn ich mein jar direkt zu classpath.txt hinzufüge, so dass es im statischen Pfad statt im dynamischen Pfad ist, bekomme ich einen Fehler beim Starten von Matlab. Ich benutze Matlab 2016.

+0

Welchen Fehler bekommen Sie, wenn Sie versuchen, Matlab mit der neueren Guava-Version zu laden? Es kann gutartig sein. Wie auch immer, es ist nicht möglich, dass Matlab eine ältere Version von Guava verwendet und Ihr Code neuere verwendet, es sei denn, Sie bauen Guava selbst mit einem anderen Namensraum neu (was ein großer Schmerz ist) Jar, das du versuchst zu laden. –

+1

Der Fehler ist "Interner Fehler: Fehler tritt beim Desktopstart auf. Details: Fehler beim Laden der Desktop-Klasse". Matlab wird mit diesem Fehler überhaupt nicht geöffnet. – CoderCole

Antwort

0

Es gibt einen Weg, aber Sie mögen es vielleicht nicht. Das Problem ist, dass Sie mit dem Java-Klassenladesystem nicht zwei Klassen mit demselben Namen und demselben Paket verwenden können (es sei denn, Sie gehen bis zu implementing your own classloader). Und wie Sie gesagt haben, ist Matlab selbst nicht kompatibel mit der neueren Guava-Version. Der einzige Weg besteht also darin, google/guava mit einem anderen Paketnamen neu zu erstellen, d. H. Alle Paketnamen und jeweiligen Importe im wörtlichen Sinne in etwas Einzigartiges zu ändern, z. ändere com.google.* zu com.google_19_0.* und baue ein Glas. Sie müssen dann den Quellcode des Jar, den Sie laden möchten, in Referenzklassen in Ihrem neuen Paket anstatt des ursprünglichen Guava-Pakets ändern. Das setzt voraus, dass Sie den Quellcode des benötigten Jars ändern können.

+1

Leider denke ich, dass Sie richtig sind. Ich habe versucht, den Quellcode mit einem neuen Paketnamen zu aktualisieren, aber ich habe andere Jars in meinem Projekt, die auch auf Guava verweisen. Sie müssten wahrscheinlich auch aktualisiert werden. Im Moment werde ich das JAR in MATLAB ausführen, anstatt es zu importieren. – CoderCole

Verwandte Themen