【发布时间】:2014-06-01 02:50:09
【问题描述】:
我知道这个问题之前已经被问过一百次了,但我尝试过的似乎都没有用。
我只是希望能够将文本文件加载到 JAR 中。我尝试过的大多数方法在 Eclipse 中都可以正常工作,但一旦导出就不行。这是我在下面尝试过的一些代码:
public String[] loadTranslations(String trans){
String name = "/translations/"+trans+".txt";
ArrayList<String> lines = new ArrayList<String>();
URL url = this.getClass().getResource(name);
System.out.println("URL: " + url);
File f = new File(url.getFile());
try {
FileReader reader = new FileReader(f);
try {
BufferedReader bufferedReader = new BufferedReader(reader);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
bufferedReader.close();
return lines.toArray(new String[lines.size()]);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException notFoundEx) {
System.out.println("Caught FileNotFoundException: " + notFoundEx.getMessage());
}
return lines.toArray(new String[0]);
}
还有……
public String[] loadTranslations3(String trans){
String name = "translations/"+trans+".txt";
ArrayList<String> lines = new ArrayList<String>();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(name)));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return lines.toArray(new String[0]);
}
该函数应该由诸如
之类的命令运行String[] translations = loadTranslations("EN");
我尝试过使用/不使用斜线等。
我的翻译文件夹在 src 目录中,它包含在构建路径中:
异常是 NullPOinter:
这是我尝试运行第二个代码示例时的转储:
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at com.animation.shop.Main.loadTranslations(Main.java:215)
at com.animation.shop.Main.initTranslations(Main.java:287)
at com.animation.shop.Main.initVars(Main.java:197)
at com.animation.shop.Main.<init>(Main.java:1142)
at com.animation.shop.Main$1.run(Main.java:361)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatc...
第 215 行:
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream(name)));
【问题讨论】:
-
在导出 jar 时,是否将翻译文件夹作为导出的一部分包含在内?
-
当你说“不工作”时——你是什么意思?
-
@Java 抱歉,这是一个空指针异常。我已经包含了来自 ubuntu 终端的屏幕截图。
-
@Aritra:该文件夹在 JAR 中可见(我认为通过将其包含在 Eclipse 的构建中可以处理该部分)
-
你也能显示你的jar文件的结构吗?
标签: java eclipse jar resources