Java 3D Hello World - баночка заморозка - PullRequest
3 голосов
/ 23 января 2011

Привет, ребята
Я следую этому руководству , чтобы создать свое первое приложение Java 3D.Я включил в свой проект библиотеки java3D и мой класс DllLoader , который извлекает (из пути к классу в расположение банки) и загружает j3dcore-ogl.dll :

public class DllLoader {

    private DllLoader() {
    }

    public static void extractAndLoad(String dll) throws IOException {
        int aux = dll.lastIndexOf('/');
        if (aux == -1) {
            aux = dll.lastIndexOf('\\');
        }
        File dllCopy = new File((aux == -1) ? dll : dll.substring(aux + 1));
        try {
            System.load(dllCopy.getAbsolutePath());
        } catch (UnsatisfiedLinkError e1) {
            try {
                DllLoader.copyFile(DllLoader.class.getResourceAsStream(dll), dllCopy);
                System.load(dllCopy.getAbsolutePath());
            } catch (IOException e2) {
            }
        }
    }

    private static void copyFile(InputStream pIn, File pOut) throws IOException {
        if (!pOut.exists()) {
            pOut.createNewFile();
        }
        DataInputStream dis = new DataInputStream(pIn);
        FileOutputStream fos = new FileOutputStream(pOut);
        byte[] bytes = new byte[1024];
        int len;
        while ((len = dis.read(bytes)) > 0) {
            fos.write(bytes, 0, len);
        }
        dis.close();
        fos.close();
    }
}


Все работает нормально, если я запускаю проект из Netbeans или открываю jar из командной строки с помощью java -jar Hello3DWorld.jar".
Моя проблема заключается в следующем: если язапустить банку простым двойным щелчком ничего не происходит .Рядом с флягой появляется dll, но рамка никогда не появляется.
Вставив в мой код JOptionPane.showMessageDialog(), чтобы выяснить, что происходит, я понял, что выполнение не выдает никаких исключений.
Он просто зависает, как вцикл после загрузки dll .
Можете ли вы помочь мне понять, почему он зависает только двойным щелчком по банке и в чем проблема?

Ответы [ 2 ]

2 голосов
/ 23 января 2011

Решил мою проблему: D
Произошла ошибка в реестре Windows ... это решение:
1) пробег regedit
2) найти HKEY_CLASSES_ROOT\jarfile\shell\open\command
3) убедитесь, что путь к javaw.exe правильный

0 голосов
/ 23 января 2011

Это вообще работает? Вы можете просто не иметь правильной ассоциации файлов для запуска файлов jar с использованием javaw.

См. этот вопрос StackOverflow относительно ассоциации файлов jar.

...