java实现压缩的jar_我如何从实现我的界面的JAR压缩文件中加载一个类? (Java)的...

我有一个问题:我写了一个实现STAF服务的Java程序(只是一个测试框架,http://staf.sourceforge.net/)。对于STAF,我所有的类都必须在STAF-INF / classes目录中。所以我把程序打包成JAR文件MyProg.jar,看起来像这样:

MyProg.jar

--> STAF-INF/

-------> classes/

------------> com/

----------------->/MyClass.class

----------------->/IInterface.class

---> META-INF/

所以,我的JAR-Archiv有两个目录,一个名为META-INF,名为STAF-INF。在STAF-INF中,有另一个名为classes的目录,在类中有我的包“com”,它包含我的类和我的接口。这就是情况。这个东西效果很好,而且我使用的STAF框架需要目录结构。

现在,问题出现了:

我希望其他用户可以将我的JAR文件(MyProg.jar)包含到自己的项目中,以编写实现我的界面IInterface的类。

问题1)当我将MyProg.jar文件添加到Eclipse-Java-Project时,它找不到IInterface。如果甚至在JAR文件中找不到任何包。我认为那些目录(STAF-INF / classes)有点关系?

问题2)当我在Eclipse中连接我的新项目和旧的MyProg-project时,Eclipse找到IInterface并且我可以实现它(这可能是解决问题1的一种方法,但是:)。然后我将我的新类导出为JAR文件,我们称之为NewClassForMyProg.jar。但是,当我在MyProg程序的NewClassForMyProg.jar中加载新类时,出现异常:

NoClassDefFoundError:com.IInterface

我认为这也与我的目录有关。但我不确定。我认为这可能是一个URLClassLoader或ClassPath的问题,但...我不知道...

请帮忙。感谢名单。

编辑:

这里是应该加载类的方法的代码:

public static ArrayList getExternalWorkloads(String jarName, String packageName)

{

jarName = "c:/STAF/services/NewClassForMyProg.jar";

packageName = "com";

packageName = packageName.replaceAll("\\." , "/");

ArrayList myClasses = new ArrayList();

JarInputStream jarFile = null;

JarEntry jarEntry = null;

try

{

jarFile = new JarInputStream(new FileInputStream (jarName));

while(true)

{

jarEntry=jarFile.getNextJarEntry();

if(jarEntry == null)

break;

if((jarEntry.getName ().startsWith (packageName)) &&

(jarEntry.getName ().endsWith (".class")))

{

String classname = jarEntry.getName().replaceAll("/", "\\.");

classname = classname.substring(0, classname.length() - 6);

if(classname.contains("$") == false)

{

ClassLoader.getSystemClassLoader();

URL url = new URL("jar:file:" + jarName + "!/");

URLClassLoader ucl = new URLClassLoader(new URL[] { url });

try

{

Class myLoadedClass = (Class) ucl.loadClass(classname);

IInterface myClass = (IInterface) myLoadedClass.newInstance();

myClasses.add(myClass);

}

catch(Exception e){}

}

}

}

jarFile.close();

}

catch(Exception e){}

return myClasses;

}哦,如果我用这个方法加载一个类,那是在我自己的JAR(MyProg.jar)中,它是完美的。但通过其他JAR(如NewClassForMyProg.jar),我得到一个错误,但该方法创建了类,问题是创建一个新实例并将其投影到IInterface ...

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值