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类。

时间: 2024-10-24 03:49:52

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

【IDEA】Error: java: Compliance level '1.6' is incompatible with target level '1.8'. A compliance level '1.8' or better is required解决办法

在运行的时候常常出现如下错误: Error: java: Compliance level '1.6' is incompatible with target level '1.8'. A compliance level '1.8' or better is required 解决办法如下: 1. 点击File标签里的Settings, 选择Build,Execution,Deployment->Compiler->Java Compiler,将其中的其中的版本改成1.8: 2. 点击Fil

Java AOP nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice || Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0' 两个异常解决办法

贴出applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://ww

关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法

今天在ubuntu下安装了qtcreator,准备测试一下是否能用,果然一测试就出问题了,简单编写后F5编译在gnome-terminal中出现 Cannot connect creator comm socket /tmp/qt_temp.u14973/stub-socket: No such file or directory 于是查了一下,知道qt不能用gnome-terminal执行,需要使用x-team,于是想到了解决方法: 找到:工具(Tools)->环境(environment)-

关于在linux下出现stdio.h文件不存在等gcc标准库不能找到的解决办法

首先说明一下我的系统配置:ubuntu 12.04     gcc 4.6.3 有几天没有使用ubuntu了,今天拿出来编程序,刚开始编译一个uboot1.1.6的代码.出现了stdio.h:没有那么个文件或目录的错误,因为我是用的arm-linux-gcc交叉编译编的,所以我刚开始怀疑是不是我的编译器有问题.后来我去编译以前写的一个网络程序 用gcc -o test test.c  然后还是出现了stdio.h:没有那么个文件或目录的错误.然后就各种google,百度.最后的解决方案是: 我的

LINUX下安装pcre出现WARNING: &#39;aclocal-1.15&#39; is missing on your system错误的解决办法

1.下载安装包 wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 2.解压 tar -xzvf automake-1.15.tar.gz 3.安装 $ cd automake-1.15 $ ./configure --prefix=安装目录 $ make $ sudo mkdir -p /opt $ sudo make install 4.导入环境变量 export PATH=/opt/aclocal-1.15/bin:$PAT

Qt Package Project 打包发布程序

在Qt项目开发完成后,我们想将项目打包发布成一个可执行文件,需要做如下步骤: 首先,将项目中的release文件中的可执行文件拷到一个新建的文件夹中,例如project.exe,用Qt自带的生成必备的dll文件的程序windeployqt,来把必要的动态库拷到该文件夹中,打开命令行,输入 windeployqt project.exe,这时候大部分的dll文件都自动拷贝过来了,但是如果项目还用了一些其他的SDK,比如OpenCV, FlyCapture2等等,就需要手动将所需dll拷贝过来,如果

Java项目打包在CMD或者Linux下运行

1.在CMD下运行 在eclipse中将项目export成jar包,然后用压缩软件解压 解压后,在CMD中进入项目根目录下,运行程序: Oracle2Redis-jar>java -cp .\lib\*; oracle.xxx.xx.cn.ReadOracle2Redis 2.在Linux中运行 把解压后的文件夹上传到Linux系统中,在项目根目录中运行: java  -cp ./lib/*: oracle.xxx.xx.cn.ReadOracle2Redis (跟Windows下路径分隔符(\

【Java】Java程序打包成jar包在Linux上运行

当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示: (2)然后在弹出的窗口中选择:Java-->Runnable JAR file,然后点击:Next,如下图所示: (3)然后选择需要打包的程序和保存的地方,然后点击:Finish,如下图所示: 这样Java程序

Eclipse JavaEE下引用jdbc时报错:找不到DB驱动及连接的解决方法

搭建购物网站的时候把IDE换成了Eclipse JavaEE.之前在MyEclipse环境下工作时配置jdbc都是直接右击项目通过build path引入相应的jar包,但这种做法在Eclipse下行不通——在调用DB时eclipse会一直提示找不到DB驱动和连接.网上搜索了一下,发现将jdbc的jar包引入到project的WebContent/WEB-INF/lib目录下即可解决问题. 原文连接:http://blog.csdn.net/liyong199012/article/detail