2017-08-07 2 views
0

Ich arbeite an einem studen Projekt, das Daten von AtMega über USB (über den virtuellen seriellen Port) lesen muss. Um auf die serielle Schnittstelle zugreifen zu können, verwende ich NeuronRobotics 'nrjavaserial (https://github.com/NeuronRobotics/nrjavaserial), welches eine Abzweigung von RXTX ist. Um meine Abhängigkeiten zu verwalten, verwende ich maven. Hier ist, was ich bekomme, wenn ich laufe CommPortIdentifier.getPortIdentifiers(); (oder je nachdem, was statische CommPortIdentifier-Funktion):java.lang.UnsatisfiedLinkError: Die abhängigen Bibliotheken können nur während des Debuggens nicht gefunden werden.

java.lang.UnsatisfiedLinkError: C:\Users\Grześ\AppData\Local\Temp\libNRJavaSerial_Grze?_0\libNRJavaSerial.dll: Can't find dependent libraries 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821) 
    at java.lang.Runtime.load0(Runtime.java:809) 
    at java.lang.System.load(System.java:1086) 
    at gnu.io.NativeResource.loadResource(NativeResource.java:142) 
    at gnu.io.NativeResource.inJarLoad(NativeResource.java:40) 
    at gnu.io.NativeResource.loadLib(NativeResource.java:60) 
    at gnu.io.NativeResource.load(NativeResource.java:28) 
    at gnu.io.SerialManager.<init>(SerialManager.java:10) 
    at gnu.io.SerialManager.getInstance(SerialManager.java:16) 
    at gnu.io.RXTXCommDriver.<clinit>(RXTXCommDriver.java:87) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:109) 
    at pl.edu.pwr.aerospace.enginebench.serial.SerialCommunicator.getAvaliablePorts(SerialCommunicator.java:34) 
    at pl.edu.pwr.aerospace.enginebench.cli.Main.connectCommunicator(Main.java:35) 
    at pl.edu.pwr.aerospace.enginebench.cli.Main.main(Main.java:21) 
java.lang.UnsatisfiedLinkError: C:\Users\Grześ\AppData\Local\Temp\libNRJavaSerial_Grze?_0\libNRJavaSerial.dll: Can't find dependent libraries 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821) 
    at java.lang.Runtime.load0(Runtime.java:809) 
    at java.lang.System.load(System.java:1086) 
    at gnu.io.NativeResource.loadResource(NativeResource.java:142) 
    at gnu.io.NativeResource.inJarLoad(NativeResource.java:40) 
    at gnu.io.NativeResource.loadLib(NativeResource.java:60) 
    at gnu.io.NativeResource.load(NativeResource.java:28) 
    at gnu.io.SerialManager.<init>(SerialManager.java:10) 
    at gnu.io.SerialManager.getInstance(SerialManager.java:16) 
    at gnu.io.RXTXCommDriver.<clinit>(RXTXCommDriver.java:87) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:109) 
    at pl.edu.pwr.aerospace.enginebench.serial.SerialCommunicator.getAvaliablePorts(SerialCommunicator.java:34) 
    at pl.edu.pwr.aerospace.enginebench.cli.Main.connectCommunicator(Main.java:35) 
    at pl.edu.pwr.aerospace.enginebench.cli.Main.main(Main.java:21) 
java.lang.ExceptionInInitializerError thrown while loading gnu.io.RXTXCommDriver 
java.lang.NoClassDefFoundError: Could not initialize class gnu.io.RXTXCommDriver thrown while loading gnu.io.RXTXCommDriver 

Hier sind meine Abhängigkeiten:

<dependencies> 

     <dependency> 
      <groupId>com.neuronrobotics</groupId> 
      <artifactId>nrjavaserial</artifactId> 
      <version>3.12.1</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 

</dependencies> 

eigenartigen, geschieht dies nur beim Debuggen, wenn ich Programm laufe normal funktioniert es wie Charme. Irgendwelche Ideen warum?

Ich fand, dass Leute ähnliche Probleme mit anderen Bibliotheken hatten, jedoch Lösungen für alle von ihnen war, DLLs zu verschieben oder Classpath zu aktualisieren, aber da ich maven verwende, vermute ich in diesem Fall die Lösung wird anders sein.

Antwort

0

Ich habe es geschafft, mein Problem zu beheben. Die Ursache dieses Problems war mein Benutzername - "Grześ", der das nicht standardmäßige Zeichen "ś" enthält. Wie Sie in der ersten Zeile der Ausnahmebedingung sehen können:

java.lang.UnsatisfiedLinkError: C:\Users\Grześ\AppData\Local\Temp\libNRJavaSerial_Grze?_0\libNRJavaSerial.dll: Can't find dependent libraries 

Der Pfad enthält ein Fragezeichen anstelle dieses Zeichens. Durch Ändern meines Benutzernamens in Windows-Eigenschaften wurde dieses Problem behoben

Verwandte Themen