Runnable jar работает нормально с java -jar, но проблемы с двойным щелчком - PullRequest
0 голосов
/ 10 апреля 2011

Я использую eclipse IDE, и я только что экспортировал свой проект, используя 'export-> Runnable Jar'.В моем коде я загрузил карту, используя

URL map1url = this.getClass().getResource("map01.txt");

и позже

inputmap = new File(map1url.getFile());

, а затем отсканировал ее данные, используя

Scanner sc = null;
    try {
        sc = new Scanner(inputmap);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

Теперь, когда я упаковываюmap01.txt в банку и дважды щелкните по нему, он запускается, но не может найти map01.txt.Когда я использую java -jar, он запускается, но все еще не может найти карту.Когда я помещаю map01.txt в тот же каталог, что и файл jar, но не на самом деле в jar, а затем дважды щелкаю по нему, он запускается, но не находит карту.Если я запускаю его с помощью java -jar, он запускается и загружает карту.В чем причина этой проблемы?Как я могу это исправить?И map01.txt - единственный ресурс, который не работает.Я загрузил много изображений, которые помещены в JAR-файл, и все они загружаются и отображаются нормально.Для изображений я использую

URL url = this.getClass().getResource("myImage.gif");
    try {
        BufferedImage myImage = ImageIO.read(url);
    } catch (IOException e) {
    }    

Почему они работают, а не моя карта?Как я могу это исправить, чтобы я мог упаковать ВСЕ мои ресурсы в одну банку, а затем дважды щелкнуть по ней, чтобы запустить?

1 Ответ

2 голосов
/ 10 апреля 2011

Когда вы говорите «новый файл (map1url.getFile ())», вы получаете файл java.io.File, который ссылается на файл в текущем каталоге. Если файл фактически находится в текущем каталоге процесса (что произойдет, если файл находится в текущем каталоге вашей оболочки и вы используете «java -jar»), это будет работать; в противном случае это не будет. *

Почему бы просто не использовать getResource (). OpenStream () для чтения файла карты?

...