2013-06-30 4 views
0

Я знаю, что нехорошая практика ловить ошибки, но в этом случае важно это сделать. Я пытаюсь запустить банку, который содержит часть моей игры, но это дает мне unsatisfiedlink ошибку, но вот это забавная часть: Я использую этот код:Поймать UnsatisfiedLinkError

System.setProperty("org.lwjgl.librarypath", new File("lib/natives").getAbsolutePath()); 

Но в NetBeans, это дает мне эту ошибку, НО, баня работает. Теперь, если я изменить в коде, это:

System.setProperty("org.lwjgl.librarypath", new File("Dist/lib/natives").getAbsolutePath()); 

Теперь он работает в NetBeans, но банку это не работает ... и я не получаю это !, так, я пытаюсь использовать TRY/поймать использовать либо обоих, и хорошо это полный код:

try{ 
    System.setProperty("org.lwjgl.librarypath", new File("lib/natives").getAbsolutePath()); 
} 
catch (UnsatisfiedLinkError e){ 
    System.setProperty("org.lwjgl.librarypath", new File("dist/lib/natives").getAbsolutePath()); 
} 

и когда я запускаю его в NetBeans, он дает мне ошибку в первой строке, а не ошибка улова часть. Что происходит? Спасибо заранее друзьям!

+0

Я бы не поставил второй блок System.setProperty() в блок catch. Поместите каждый из вызовов System.setProperty() в блок try {} и в каждом из них задайте логическое значение, чтобы указать, был ли улов обнаружен или нет. Итак, сначала попробуйте {} блок для первого System.setProperty(), и если блок catch запущен из-за ошибки, установите логическое значение, чтобы указать, что альтернативный System.setProperty() следует попробовать в своем блоке try. –

+0

ohh благодарит человека, но, судя по всему, я делаю беспорядок с кодом сейчас, потому что jar работает, дважды щелкнув его, но если я попытаюсь запустить его из cmd, он не будет запущен. –

ответ

1

В коде так:

new File("Dist/lib/natives").getAbsolutePath() 

вы даете путь "Dist/Библиотека/туземцам" по отношению к JRE "пользователь" (или рабочий) каталог. Относительно значения системного свойства «user.dir». Значение этого свойства устанавливается при запуске JVM и может варьироваться в зависимости от того, как запускается JVM. Вы должны распечатать или зарегистрировать значение «user.dir» и понаблюдать за различиями в каждом заданном случае, указанном в вашем вопросе, чтобы понять, что происходит.

System.ou.println(System.getProperty("user.dir"));