我的项目具有以下结构:
KnitProject - Project Name
/src/main/java/com/knit/controller/File1.java
/src/main/resources/data/read.txt
在File1.java中,我试图获取 / src / main / resources 文件夹中的read.txt路径。
Main.java
=========
Server server = new Server(8585);
.....
.....
server.start();
server.join();
File1.java
==========
URL url = Encrypter.class.getResource("/data/read.txt");
System.out.println(url.getFile()); //This prints "C:/Users/KnitProject/target/classes/data/read.txt" which is working locally from my system
当我在Tomcat i.e http://<ip>:8080, /src/main/resources path is not accessible.
中部署此jar时
System.out.println(url.getFile()); //This prints "http://<ip>:8080/test/target/KnitProject.jar!/data/read.txt.
当尝试使用读取文件时
FileInputStream fileInputStream = new FileInputStream(new File(url.getFile())) ---> gives me error FileNotFound Exception when deployed in Tomcat
我创建了一个KnitProject应用程序jar并将其部署在Tomcat中。谁能帮我我在做什么错。可以从本地计算机访问 / src / main / resources /,并且相同的代码给出错误FileNotFound异常。
如何读取/ src / main / resources / data下的文件。我在代码中使用Embedded Jetty服务器,并且将其编译并构建为一个Jar,然后部署在Tomcat中。我正在使用JNLP运行jar。
答案 0 :(得分:1)
您可以使用resourceAsStream
方法从jar中读取文件
InputStream stream = Encrypter.class.getResourceAsStream(filePath)
现在,您可以继续此流