我已经尝试了很多方法,并遵循了几个在线说明,比如这个-Eclipse导出的Runnable JAR不显示图像,但到目前为止,没有成功。
我有一个非常简单的程序,读取一个文本文件(test.txt),并将其内容打印到标准输出。我正在使用Eclipse。这是我所做的-
任何帮助都将不胜感激。
附录:这是代码。
public class FileIOTest {
public static void main(String[] args) {
String line;
try {
BufferedReader br = new BufferedReader(new FileReader(new File("/test.txt")));
while((line = br.readLine()) != null){
System.out.println(line);
}
br.close();
}
catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}
}
你可以在没有日蚀的情况下创建jar。例如,如果我在包src
(目录相同)中有一个Demo
类,并且资源文件(名为testing.txt
)在资源
目录中。我添加一个Manifest.txt
文件@目录的根目录:
Manifest-Version: 1.0
Main-Class: src.Demo
Demo
类看起来像:
package src;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo {
public static void main(String... args) {
try (BufferedReader br = new BufferedReader(new InputStreamReader(Demo.class.getResourceAsStream("/resources/testing.txt"))))
{
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试。txt文件类似于:
hello world
How are you?
编译Demo.java获得Demo.class
javac src/Demo.java
创建
jar
jar cfm myJar.jar Manifest.txt src/* resources/*
然后运行它
java -jar myJar.jar
在eclipse中,只需在类路径中添加resources文件夹(确保它在jar中),并将其作为类路径资源读取(使用
getResourceAsStream
方法)
文件的工作方式与资源不同。如果您想要一个资源,那么您不应该尝试使用任何File(Xxx)
变体,这些变体将在文件系统上显示。
您提供的链接使用了返回URL的Class.getResources
,但也有返回InputStream
的Class.getResourceAsStream
,您可以将其包装为InputStreamReader
.举个例子
InputStream is = FileIOTest.class.getResourceAsStream("/text.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
您不能通过文件读取器
访问Jar文件中的资源,因为它不是文件系统中的文件。Java确实有一种机制来访问类路径(包括JAR)中的资源:ClassLoader。getResourceAsStream()。您可以将其与默认类加载器一起使用:
BufferedReader br = new BufferedReader(new InputStreamReader(
ClassLoader.getSystemClassLoader()
.getResourceAsStream("resource/test.txt")));
注意getResourceAsStream
返回null
而不是抛出异常,所以您可能想先获取流,检查是否为null
,然后抛出异常或处理它。
您将希望将jar中的完整路径作为您的路径。
问题内容: 我最近用Slick2D开发了一个游戏,我直接访问了所有图像,例如 与使用将加载资源的类或使用输入流相反。 我想知道是否仍然可以将所有资源加载到jar中,我将该文件夹添加到了我的buildpath中,并使用jarsplice添加了我的库和本机,但是jar无法运行,因为它找不到图像。 问题答案: 正在研究运行应用程序的根文件系统。如果要使用jarfile中打包的资源,则必须执行以下操作:
我需要创建一个应用程序,使用各种参数,如高度,体积或基础面积排序各种类型的多边形。将通过命令行传递具有多边形参数、排序类型参数、排序方法参数的文件名的参数。该文件位于项目中的“我的资源”文件夹中的“我的src”文件夹之外。我已经实现了所有的程序,当我通过eclipse运行配置使用pass参数运行时,它工作得很好。但是当我尝试使用cmd相同的参数运行我的.jar文件时,它给出了。 我使用打开了我的j
我在使用Scala在Eclipse中创建一个可运行的jar文件时遇到了一些麻烦。 在Eclipse中,我有一个Scala项目,我希望将其变成一个可运行的jar文件。当我运行jar文件时,它找不到Scala标准库。 IDE-我正在使用Scala IDE扩展Eclipse以适应Scala的使用。 Setup-要导出,右键单击我的项目并向下导航export>Runnable Jar文件。我选择运行配置并
问题内容: 我需要从罐子中加载属性文件。该罐子包含在war文件中。这是结构 现在,我在一个servlet中编写了以下代码,如下所示: 但是上面的代码我得到流为空。如果我将属性文件放在ROOT.war / WEB- INF中,则可以正常工作。我有一个不错的主意,如果getResourceAsStream中的路径以“ /”开头,那么它将在上下文根目录中搜索资源。但是,如何读取位于jar的资源,该jar
问题内容: 我知道还有其他针对同一问题的问题,但问题是解决方案对我不起作用。我有一个小工具,它应该读取我想拥有的文件并将其打包为资源,并依赖于其他我希望将其作为jar而不是单个类的项目(我正在使用Eclipse Helios)。 作为Eclipse中的应用程序,我可以通过以下方式访问资源 当且仅当将资源文件夹放置在输出路径(已编译的源)下时,并且如果将其放置在src文件夹中时,则不是这样。 当我打
问题内容: 我有一些可怕的行为。我有以下Maven配置: 这将创建包含所有类的JAR文件,但我在类路径中有一些资源也应包括在内。如果我将参数放在阶段的前面,那么我的所有资源都会包括在内。如果我使用运行Maven ,则不包含任何资源。我的资源位于(不是通常的目录)下。 问题答案: 目标配置中未正确定义资源的源目录。同样,outputDirectory元素将资源放置在dir中,默认情况下将其打包。试试