файл java- jar не может найти ресурсы - PullRequest
0 голосов
/ 31 января 2010

Я работаю над Java-приложением, и в программе я использую некоторые файлы, такие как изображения, локальную базу данных и файл .htm (используется как файл справки).

Я пытался сделать доступ к этим ресурсам независимым от местоположения. Итак, я сделал в пакете, который содержит мои исходные файлы, подпапку с именем resources, и я поместил туда все эти изображения и т. Д. Я получаю к ним доступ через метод .getResource (), а не по путям. Например, вот как я получаю доступ к ресурсу изображения:

lang_icon=new javax.swing.ImageIcon(getClass().getResource("/myeditor/resources/checked.gif"));

Проблема в том, что при создании файла .jar он не работает должным образом. Он успешно загружает изображения, но не может подключиться к локальной базе данных или открыть файл .htm.
Вот код, который я использую для доступа к файлу .htm (он отлично работает, когда я запускаю приложение через Netbeans )

URL helpFile= getClass().getResource("/myeditor/resources/help/help.htm");

    try {
        BrowserLauncher launcher = new BrowserLauncher();
        launcher.openURLinBrowser(helpFile.toString());
    } catch (BrowserLaunchingInitializingException ex) {
        Logger.getLogger(mainAppFrame.class.getName()).log(Level.SEVERE, null, ex);
    } catch (UnsupportedOperatingSystemException ex) {
        Logger.getLogger(mainAppFrame.class.getName()).log(Level.SEVERE, null, ex);
    }

и вот код, который я использую для доступа к своей локальной базе данных

URL url = getClass().getResource("/myeditor/resources/icddb");
    database = new File(url.getFile());
    try
       {
            Class.forName("org.hsqldb.jdbcDriver");

            con = DriverManager.getConnection("jdbc:hsqldb:file:" + database+"\\icddb", "sa", "");

Когда я пытаюсь открыть файл .htm через файл .jar, он показывает эту ошибку «У этого файла нет программы, связанной с ним для выполнения этого действия. Создайте ассоциацию в параметрах папки на панели управления». /> Когда я пытаюсь подключиться к своей локальной базе данных, появляется сообщение «Серьезно не удалось открыть базу данных».
Все идеи приветствуются! Спасибо и извините за мой английский!

1 Ответ

1 голос
/ 31 января 2010

Можете ли вы распечатать URL, который вы просите открыть браузер? Это должно дать более четкое представление о том, что происходит.

Я подозреваю, что URL, который вы получаете от getResource(), является URL, указывающим на в вашем .jar файле Таким образом, браузеру будет трудно открыть его. Я бы (возможно) распаковал этот файл во временную директорию и открыл бы браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...