我正在尝试从其他项目的类文件中获取输入流。
我正在使用eclipse。输出文件夹是:
mycurrentproject/WebContent/WEB-INF/classes
。
导出库文件夹是:
mycurrentproject/WebContent/WEB-INF/lib
。
当我打印“java.class.path”时,我得到了这个:
D:\apache-tomcat-7.0.42\bin\bootstrap.jar;D:\apache-tomcat-7.0.42\bin\tomcat-juli.jar;
我的WINDOWS系统CLASS PATH的环境变量是:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;D:\work\workspace\myjar
我在代码action
中获取资源流的代码是:
classfilePath = "/cc/Person.class";
InputStream isInputStream = ModifyMethodTest.class.getResourceAsStream(classfilePath);
包action
在“mycurrentproject / WebContent / WEB-INF / classes”中输出。 action.jar
导出到“mycurrentproject / WebContent / WEB-INF / lib”中。
当“mycurrentproject / WebContent / WEB-INF / classes”中的cc/Person.class
时,我得到了正确的结果。何时在“mycurrentproject / WebContent / WEB-INF / lib”或“D:\ work \ workspace \ myjar”中cc/Person.class
。 isInputStream
为空。我想在另一个项目中将输入流形成一个类文件。类文件可能位于目标项目文件夹的文件夹或jar文件中。该项目中应该有许多类或jar文件。怎么做?就目前而言,简单来说,我测试了我的想法,将cc/Person.class
放在“D:\ work \ workspace \ myjar”中。但它也失败了。任何人都有类似的经历或建议吗?感谢。
修改
classfilePath ="file:D:/work/workspace/myjar/cc/Person.class";
URL[] urls = new URL[] { new URL(classfilePath) };
URLClassLoader ucl = new URLClassLoader(urls);
InputStream isInputStream = ucl.getResourceAsStream(classfilePath);
这里isInputStream仍然为null。 getResourceAsStream()的参数是String name
。可能是什么?像相对路径的东西?有没有参考?
EDIT2:
它适用于以下代码:
String Path1 = "file:D:/";
String Path2 = "work/workspace/myjar/cc/Person.class";
URL[] urls = new URL[] { new URL(Path1) };
URLClassLoader ucl = new URLClassLoader(urls);
InputStream isInputStream = ucl.getResourceAsStream(Path2);
答案 0 :(得分:1)
使用URLClassLoader
。建立后,请致电:
getResourceAsStream("/work/workspace/myjar/cc/Person.class")
InputStream
。