Java プログラムの実行中にエラーが発生しました

Java プログラムの実行中にエラーが発生しました

私はWindows 7で「ldraw2sunflow」というJavaアプリケーションを使用しようとしています。これは2つの3Dモデル形式を変換します。プログラムの説明は次のとおりです。こことにかく、最初に試したときはプログラムは実行されましたが、今は実行されなくなりました。

これは奇妙なことです。なぜなら、このプログラムはもっている過去には正常に動作していました。

エラーは次のとおりです:

Jan 31, 2018 3:27:49 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Jan 31, 2018 3:27:49 PM org.ldraw2sunflow.ui.Ldraw2Sunflow <init>
INFO: en_US
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException
: String index out of range: -1
        at java.lang.String.substring(Unknown Source)
        at org.ldraw2sunflow.util.PartFinder.loadColor(PartFinder.java:274)
        at org.ldraw2sunflow.util.PartFinder.setLDRAWDIR(PartFinder.java:172)
        at org.ldraw2sunflow.ui.impl.LDrawPanel.initPreferences(LDrawPanel.java:122)
        at org.ldraw2sunflow.ui.impl.LDrawPanel.<init>(LDrawPanel.java:47)
        at org.ldraw2sunflow.ui.Ldraw2Sunflow.<init>(Ldraw2Sunflow.java:80)
        at org.ldraw2sunflow.ui.Ldraw2Sunflow.lambda$main$10(Ldraw2Sunflow.java:114)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

2つの質問:

  1. エラーの原因は何ですか?
  2. ソースコードがなくてもこの問題を修正できますか?

ありがとう。

[編集]

私のコマンドラインは次のとおりです:"C:\Program Files\Java\jre1.8.0_161\bin\java.exe" -Xmx1G -jar "E:\Programs Windows\LDraw\LDraw2Sunflow_f\ldraw2sunflow.jar"

[編集]

これは何らかのレジストリの問題ではないかと考えています。regedit を使用して「HKEY_USERS\S-1-5-21-2113055238-2099637611-63920502-1003\Software\JavaSoft\Prefs\org」を削除すると、プログラムは再び起動します。ただし、プログラムを再起動すると、保存されたライブラリ パスが失われるため、再度入力する必要があります。(プログラムを停止/起動するたびに、何度も何度も入力する必要があります。)

実際のプログラムは現在どこか別の場所で失敗しています:

Exception in thread "Thread-4" java.lang.UnsatisfiedLinkError: no lwjgl in java.
library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at org.lwjgl.LWJGLUtil.loadLibrarySystem(LWJGLUtil.java:337)
        at org.lwjgl.Sys.<clinit>(Sys.java:29)
        at org.ldraw2sunflow.lwjgl.PreviewOpenGL.run(PreviewOpenGL.java:160)
        at org.ldraw2sunflow.ui.impl.RenderPanel.convertFile(RenderPanel.java:11
7)
        at org.ldraw2sunflow.ui.impl.RenderPanel.access$000(RenderPanel.java:61)

        at org.ldraw2sunflow.ui.impl.RenderPanel$1.run(RenderPanel.java:85)

答え1

これは既知の Java の問題です。

1. 最初のステップ:

次のようにプログラムを実行する場合:

java -jar ldraw2sunflow.jar

両方のファイルへのフルパスを追加します。次のようになります。

/usr/java/<version>/bin/java -jar /home/<username>/Downloads/ldraw2sunflow.jar

2. 2番目のステップ:

Windows 7の場合:

  1. 「コントロールパネル」を起動します
  2. 「既定のプログラム」をクリックします
  3. 「ファイルの種類またはプロトコルを特定のプログラムに関連付ける」をクリックします。
  4. ダブルクリック.jar
  5. C:\Program Files\Java\jre1.8.0_161\bin\javaw.exe を参照します。
  6. 開くボタンをクリックします
  7. OKボタンをクリックします

3. 最後のステップ:

変換するEXEとにかく必要なのはJRE実行するのに時間がかかりますが、100%実行可能です。このようなコンバーターには多くの種類があります。以前はjar2exe

関連情報