2017-08-07 13 views
0

私はスタットマンプロジェクトに取り組んでいます。これは、USB経由で(仮想シリアルポートを使用して)AtMegaから送信されたデータを読み込む必要があります。シリアルポートにアクセスするには、RXTXのフォークであるNeuronRoboticsのnrjavaserial(https://github.com/NeuronRobotics/nrjavaserial)を使用しています。依存関係を管理するために、私はmavenを使用しています。java.lang.UnsatisfiedLinkError:デバッグ中にのみ依存ライブラリが見つかりません

<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> 

はStrangly、これが唯一の私は、通常のプログラムを実行すると、それは動作しますが、デバッグ中に起こる:ここ

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 

は私の依存関係がある:ここで私は CommPortIdentifier.getPortIdentifiers();(またはいずれかの静的 CommPortIdentifier機能)を実行したときに、私は何を得るのです魅力のように。なぜどんなアイデア?

人が他のライブラリと同様の問題を抱えていることがわかりましたが、すべてのソリューションはDLLを移動したりクラスパスを更新したりしていましたが、私はmavenを使用しているので解決策は異なります。

答えて

0

問題を解決できました。この問題の根本的な原因は、私のユーザー名 - "Grześ"でした。これには非標準文字 'ś'が含まれています。例外情報の最初の行に表示されているとおり、

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

パスには、この文字の代わりに疑問符が含まれています。 Windowsのプロパティでユーザー名を変更するとこの問題が解決しました

関連する問題