Java 导出后的FileSystemNotFoundException

Java 导出后的FileSystemNotFoundException,java,export,Java,Export,今天我在出口后遇到了一个问题(我使用的是ecplise) (我的申请在导出前完成,但在导出后未完成) 错误屏幕: 我曾尝试与其他库处理选项一起导出,它给了我相同的错误,但有更多错误: 错误屏幕: 下面是我的启动方法所在的类: package com.bleu.application; 导入java.io.File; 导入java.io.IOException; 导入java.net.URISyntaxException; 导入java.net.URL; 导入java.nio.file.Files

今天我在出口后遇到了一个问题(我使用的是ecplise) (我的申请在导出前完成,但在导出后未完成)

错误屏幕:

我曾尝试与其他库处理选项一起导出,它给了我相同的错误,但有更多错误:

错误屏幕:

下面是我的启动方法所在的类:

package com.bleu.application;
导入java.io.File;
导入java.io.IOException;
导入java.net.URISyntaxException;
导入java.net.URL;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
公共级Bleu{
public static void launch()引发IOException,URISyntaxException{
文件Bleu=新文件(“C:\\temp\\Bleu.exe”);
URL=Bleu.class.getResource(“Bleu.exe”);
Path source=Path.get(url.toURI());
copy(source,Bleu.toPath());
}
}
这是主要的课程

package com.bleu;
导入java.io.IOException;
导入java.net.URISyntaxException;
导入com.bleu.application.bleu;
导入com.bleu.bootstrap.bootstrap;
公共班机{
publicstaticvoidmain(字符串[]args)抛出IOException、URISyntaxException{
Checker.deleteExists();
update();
Bleu.launch();
}
}

永远不要假设资源是常规文件。如果资源位于.jar文件中,则它只是压缩字节的子序列,而不是真正的文件

与其尝试将资源视为路径,不如将其作为InputStream获取,然后复制该InputStream:

Path bleu = Paths.get("C:\\temp\\Bleu.exe");

try (InputStream source = Bleu.class.getResourceAsStream("Bleu.exe")) {
    Files.copy(source, bleu);
}

永远不要假定资源是常规文件。如果资源位于.jar文件中,则它只是压缩字节的子序列,而不是真正的文件

与其尝试将资源视为路径,不如将其作为InputStream获取,然后复制该InputStream:

Path bleu = Paths.get("C:\\temp\\Bleu.exe");

try (InputStream source = Bleu.class.getResourceAsStream("Bleu.exe")) {
    Files.copy(source, bleu);
}

我解决了这个问题,谢谢你的帮助

我用的是:

URI=getClass().getResource(“myresourcefile.txt”).toURI(); if(“jar”.equals(uri.getScheme())){ 对于(FileSystemProvider提供程序:FileSystemProvider.installedProviders()){ if(provider.getScheme().equalsIgnoreCase(“jar”)){ 试一试{ getFileSystem(uri); }捕获(FileSystemNotFounde异常){ //在这种情况下,我们需要首先对其进行初始化: newFileSystem(uri,Collections.emptyMap()); } } } }
路径源=Path.get(uri)我解决了这个问题,谢谢你的帮助

我用的是:

URI=getClass().getResource(“myresourcefile.txt”).toURI(); if(“jar”.equals(uri.getScheme())){ 对于(FileSystemProvider提供程序:FileSystemProvider.installedProviders()){ if(provider.getScheme().equalsIgnoreCase(“jar”)){ 试一试{ getFileSystem(uri); }捕获(FileSystemNotFounde异常){ //在这种情况下,我们需要首先对其进行初始化: newFileSystem(uri,Collections.emptyMap()); } } } }
路径源=Path.get(uri)导出时,您指的是什么?创建
可运行jar
?我猜错误prettry much表明您试图从jar中查找
Bleu.exe
文件的路径,这似乎是错误的(如果您尝试复制它,
exe
为什么会在
jar
中)。您好,谢谢您的回答,我引用的是Runnable Jar导出选项no others,我不知道为什么在导出项目之前我没有错误,应用程序运行得很好,但是为什么在导出之后不工作,并使我出错。我将可执行文件放在jar中,然后将他和他的.dll复制到jar外的另一个文件夹中,因为这是我发现的运行具有.dll依赖项的可执行文件的唯一方法(因为如果我只是在没有.dll的情况下运行他,应用程序将崩溃而不运行)我假设不同之处在于您的
exe
不在
压缩的
容器中。如果要将其复制到jar文件之外,首先要
解压缩它。因此,我想您可能希望在jar旁边有一个包含这些内容的文件夹,然后从那里复制它。请在问题中以文本形式包含异常堆栈跟踪,而不是以图像链接的形式。图像很难阅读,无法搜索,并且对视力受损的用户没有用处。外部链接最终会消失,这将使你的问题对未来的读者毫无用处?创建
可运行jar
?我猜错误prettry much表明您试图从jar中查找
Bleu.exe
文件的路径,这似乎是错误的(如果您尝试复制它,
exe
为什么会在
jar
中)。您好,谢谢您的回答,我引用的是Runnable Jar导出选项no others,我不知道为什么在导出项目之前我没有错误,应用程序运行得很好,但是为什么在导出之后不工作,并使我出错。我将可执行文件放在jar中,然后将他和他的.dll复制到jar外的另一个文件夹中,因为这是我发现的运行具有.dll依赖项的可执行文件的唯一方法(因为如果我只是在没有.dll的情况下运行他,应用程序将崩溃而不运行)我假设不同之处在于您的
exe
不在
压缩的
容器中。如果要将其复制到jar文件之外,首先要
解压缩它。因此,我想您可能希望在jar旁边有一个包含这些内容的文件夹,然后从那里复制它。请在问题中以文本形式包含异常堆栈跟踪,而不是以图像链接的形式。图像很难阅读,无法搜索,并且对视力受损的用户没有用处。外部链接最终会消失,这将使你的问题对未来的读者毫无用处。