【发布时间】:2018-10-31 10:34:02
【问题描述】:
我正在尝试访问这样的文件:
public class Main {
private static class RemoteAdapter implements SpellcheckerRemoteAdapter {
private Spellchecker spellchecker;
private String fileName = "deutsch.txt";
File file = new File(getClass().getClassLoader().getResource(fileName).getFile());
private RemoteAdapter() {
this.spellchecker = SpellcheckerFactory.createSpellchecker(file);
}
@Override
public boolean check(String word) {
return this.spellchecker.check(word);
}
@Override
public List < String > getProposal(String word) {
return this.spellchecker.getProposal(word);
}
}
public static void main(String[] args) {
System.out.println("Start Server");
try {
Registry registry = LocateRegistry.createRegistry(1088);
SpellcheckerRemoteAdapter adapter = new RemoteAdapter();
UnicastRemoteObject.exportObject(adapter, 0);
registry.rebind(SpellcheckerRemoteAdapter.NAME, adapter);
} catch (RemoteException re) {
System.out.println(re.getMessage());
}
System.out.println("Server is running!");
}
}
当我在 Eclipse 中运行我的代码时,它工作得很好。但是,如果我将项目导出为可运行的 jar,我会收到以下错误:
java.io.FileNotFoundException: file:\C:\Users\Linsane\Desktop\server\SpellcheckerServer.jar!\deutsch.txt(文件名、目录名或卷标语法不正确)
虽然我知道该文件位于此位置,并且由于我自己没有构建路径,但我并没有真正了解问题所在。
【问题讨论】:
-
资源不是文件。您有 URL:使用它直接获取输入流。
-
@EJP 你能解释一下你的确切意思吗?我真的不明白。对不起
-
错误,
getClass().getClassLoader().getResource(fileName).openStream()?还是 getClass().getClassLoader().getResourceAsStream(fileName)`?这些都有记录。
标签: java java-io filenotfoundexception