首页 > 代码库 > Java Project打包,发布到Web Project下之后,运行Web Project出现找不到Java Project中资源的解决办法

Java Project打包,发布到Web Project下之后,运行Web Project出现找不到Java Project中资源的解决办法

要想使得web项目可以访问引用的Java Project中的资源,需要在Java Project中,将需要的IO操作的文件都放置到src目录下

法一

    在Java Project中,有IO操作的类需要这样写
package cn.edu.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Writer { 
 public static void main(String[] args) throws IOException {
  System.out.println(read());
 }
 public static String read() {
 // resource/a/b/test.txt在src目录下
  InputStream resourceAsStream = Writer.class.getClassLoader().getResourceAsStream("resource/a/b/test.txt");
  BufferedReader br = new BufferedReader(new InputStreamReader(resourceAsStream));
  String readLine = null;
  try {
   readLine = br.readLine();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if (br != null)
    try {
     br.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
  }
  System.out.println(readLine);
  return readLine;
 }
}
但是这种方法有一定的局限性,比如拿到路径之后获取到的返回值是一个InputStream输入流的对象,当我们使用Apache commons-io这个强大的IO包来操作文件时,该包中的方法接收的参数都是String类型的路径,而不是输入流对象。所以该方法不便于使用commons-io包。

法二

同样是在Java Project中的类,如果有IO操作,需要这样写
package cn.edu.test;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class Writer {
 public static void main(String[] args) throws IOException {
  System.out.println(read());
 }
 public static String read() {
  // resource/a/b/test.txt存放在src目录下
  String path = Writer.class.getClassLoader().getResource("").getPath();
  path += "resource/a/b/test.txt";
  System.out.println(path);
  String readFileToString = null;
  try {
   readFileToString = FileUtils.readFileToString(new File(path));
  } catch (IOException e) {
   e.printStackTrace();
  }
  return readFileToString;
 }
}
但是这种方法也有一定的局限性,如果使用这种方式,你需要将Java Project中src目录下使用到的资源文件,原样拷贝到Web Project中的src目录下,但是使用这种方式获取的返回值就是String类型的路径名,之后可以使用强大的commons-io包了,比如FileUtils类

Java Project打包,发布到Web Project下之后,运行Web Project出现找不到Java Project中资源的解决办法