1

Я пытаюсь использовать приложение Java на Windows 7 под названием "ldraw2sunflow". Он преобразует между двумя форматами 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)

Два вопроса:

  1. Что является причиной ошибки?
  2. Могу ли я решить эту проблему, не имея исходного кода?

Благодарю.

[редактировать]

Вот моя командная строка: "C:\Program Files\Java\jre1.8.0_161\bin\java.exe" -Xmx1G -jar "E:\Programs Windows\LDraw\LDraw2Sunflow_f\ldraw2sunflow.jar"

[редактировать]

Я подозреваю, что это какой-то тип проблемы реестра, так как, когда я удаляю "HKEY_USERS\S-1-5-21-2113055238-2099637611-63920502-1003\Software\JavaSoft\Prefs\org" с помощью regedit, программа запускается снова. Однако при перезапуске программы пути к хранимым библиотекам отсутствуют, поэтому мне приходится вводить их снова. (И снова, и снова, и снова, каждый раз, когда я останавливаю / запускаю программу.)

Реальная программа терпит неудачу где-то еще сейчас:

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 ответ1

1

Это известная проблема Java.

1. Первый шаг:

Если вы запускаете свою программу так:

java -jar ldraw2sunflow.jar

добавить полный путь к обоим файлам, что-то вроде:

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

2. Второй шаг:

Для Windows 7:

  1. Запустите "Панель управления"
  2. Нажмите "Программы по умолчанию"
  3. Нажмите "Связать тип файла или протокол с определенной программой"
  4. Двойной щелчок .jar
  5. Просмотрите C:\Program Files\Java\jre1.8.0_161\bin\javaw.exe
  6. Нажмите кнопку Открыть
  7. Нажмите кнопку ОК

3. Последний шаг:

Конвертировать банку в exe. В любом случае вам понадобится JRE для его запуска, но он будет на 100% работоспособен. Там много вариантов таких преобразователей. Раньше я использовал jar2exe.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .