gpt4 book ai didi

java - 如何从其他项目中存在的类文件获取输入流

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:29 25 4
gpt4 key购买 nike

我正在尝试从其他项目的类文件中获取输入流。

我正在使用 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时,我得到了正确的结果。当 cc/Person.class 位于“mycurrentproject/WebContent/WEB-INF/lib”或“D:\work\workspace\myjar”中时。 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() 的参数是字符串名称。可能是什么?比如相对路径之类的?有引用资料吗?

编辑2:

它的工作原理如下:

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);

最佳答案

使用URLClassLoader。建立后,请调用:

getResourceAsStream("/work/workspace/myjar/cc/Person.class")

对于InputStream

关于java - 如何从其他项目中存在的类文件获取输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18941401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com