2017-02-14 34 views
0

Вопрос: У меня есть файл .jar и 2 папки, содержащие активы. Я бы хотел, чтобы все они были упакованы в один файл .exe. Я уже пробовал Launch4j, но это не позволяет добавлять активы в .exe.Пакет .JAR и динамически загруженные активы в один .EXE

Вопрос 2:
Я определить пути к файлам в моей программе, используя "активы/аудио /" + assetName. Будет ли это необходимо изменить, следуя вашему методу, и если да, то как? Если вы не знаете ответа на этот вопрос, просто не отвечайте на него.

Этот вопрос был задан для других языков here и here, но ответы на эти вопросы не помогут. Все полезно, и спасибо заранее.

+0

Посредством активов вы имеете в виду ресурсы, правильно? Как связать их непосредственно в банку? Тогда доступ к ним немного отличается. Вам нужно будет вызвать 'MyClass.class.getResource()' или 'MyClass.class.getResourceAsStream()'. – Mordechai

+0

@MouseEvent Я только что прошел через свой проект и последовал твоему предложению, мой комплект выглядит как [это] (https://gyazo.com/1d2a6055946d7327a50fd77bf47689d4), и я называю ресурсы такими, как [это] (https://gyazo.com/b20f4e3f6317f1866188fa631a108346). Все работает хорошо, когда запускается с Eclipse, хотя при экспорте в качестве runnable .JAR. Похоже, что программа не сможет ссылаться на ресурсы, не могли бы вы мне помочь? Если вам нужна дополнительная информация, я был бы рад предоставить – Peake

ответ

1

Вы можете положить активы в свою банку.

Например, если у вас есть файл с именем Test.txt и вы хотите напечатать содержимое файла в консоли

Файл «Test.txt» помещается в пакет под названием активы на том же уровне корневой пакет

The project structure will look like this

package net.test; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 

public class Test { 
    public static void main(String[]args) { 
     BufferedReader br = null; 

     try { 
      InputStream is = Test.class.getResourceAsStream("/assets/Test.txt"); 

      if(is != null) { 
       br = new BufferedReader(new InputStreamReader(is)); 

       //Print the content of Test.txt 
       String line; 
       while((line = br.readLine()) != null) { 
        System.out.println(line); 
       } 
      } else { 
       //Resource not found 
       System.out.println("Resource unavailable!"); 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); //Log IO Error 
     } finally { 
      if(br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) {} 
      } 
     } 
    } 
} 

вы не можете получить доступ к ресурсам .jar, как вы обычно делаете с внешними файлами с помощью объекта File.

Если ваши активы находятся в банке, вы можете использовать Launch4j (или альтернативу) для получения .exe.

+1

Это лучшая новость, которую я получил весь день, большое вам спасибо! – Peake

+0

Я только что прошел через свой проект и последовал твоему предложению, мой комплект выглядит так, и я называю ресурсы такими. Все работает хорошо, когда запускается с Eclipse, хотя при экспорте в качестве runnable .JAR. Похоже, что программа не сможет ссылаться на ресурсы, не могли бы вы мне помочь? Если вам нужна дополнительная информация, я был бы рад предоставить – Peake