我尝试使用Desktop.getDesktop()从.jar文件启动文本文件.open(file)
String fileName = "file.txt";
URL url = getClass().getResource(fileName);
File fileToRead = new File(url.toURI());
Desktop.getDesktop().open(fileToRead);
为简单起见,我省略了try-catch块。 它可以在从eclipse运行时打开我的文件。但是一旦导出到.jar文件,我在 文件fileToRead = new File(url.toURI());
中得到NullPointerException答案 0 :(得分:0)
当你在.jar文件中打包一个类时,它通常会使它嵌套更深一层。
因此,您可以尝试将第一行更改为:
String filename = "../file.txt";
答案 1 :(得分:0)
查看Class.getResource(String)
的JavaDoc:
使用此算法从给定的资源名称构造绝对资源名称:
如果名称以' /'开头,则资源的绝对名称是' /'后面的名称部分。 否则,绝对名称具有以下形式:
modified_package_name/name
modified_package_name
是此对象的包名称,其中' /'取代'。'。参数:
name - 所需资源的名称
返回: 如果找不到具有此名称的资源,则为URL对象或 null
找不到您的资源,因此NullPointerException。按照JavaDoc所描述的方式指定JAR中的路径(以' /&#39开头的绝对路径;或相对于this
的类,即您调用的对象getClass().getResource(fileName)
)和你应该得到它。