欢迎来到天天文库
浏览记录
ID:62033667
大小:18.50 KB
页数:3页
时间:2021-04-15
《JAVA文件中调用已编译的.CLASS的类.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、java程序调用javac编译.java文件生成.class文件publicclassTest{ﻫpublicvoidcompile(Stringpath)throws IOException{ﻫ Runtime rt=Runtime。getRuntime(); String command=”javac”;ﻫ rt。exec(command+path);ﻫ rt.gc();ﻫ} }初学Java时教科书告诉我们,若要运行Java程序,必需为其设置环境变量.有时候为了实现某种功能
2、(例如动态加载Class)我们需要在程序中来实现这个功能.我们经常使用的Eclipse就是很好的例子,它的所有插件的。jar文件都是放在plugin目录下的,如何加载这些包并使用其中的类成了一个棘手的问题。(关于Eclipse的类加载机制,大家可以参考《ContributingtoEclipse》p54)ﻫ下面我们就来看看,在程序中如何实现这个功能。ﻫ1、建立一个工程,并为其增加一个Interface,命名为ActionInterface.java。该接口为使用者公开了一个方法,如下:ﻫ程序代码p
3、ackage org.junesky.classPathTest;publicinterfaceActionInterface { publicStringaction();ﻫ}ﻫ编译后,将该工程打包为.jar文件.打包方法:ﻫ在包的顶级目录(也就是例子中的org所在的目录)建立一个名为MANIFEST。MF的文件,键入:Manifest—Version:1.0保存。ﻫ在ms—doc窗口中键如命令:jarcvfmclassLoader.jarMANIFEST.MForg/ﻫ其中classLo
4、ader.jar是打包后的文件名,org/是path。2、建立一个新工程,将classLoader.jar导入,新建class文件MyAction并实现ActionInterface。如下:ﻫﻫ程序代码ﻫpackageorg.junesky.MyAction;ﻫimport org.junesky.classPathTest。 ActionInterface;ﻫpublicclass MyActionimplements ActionInterface{ﻫ publicString actio
5、n(){ //TODOAuto-generatedmethodstubﻫ return"——------—-—---—--—ok";ﻫ }ﻫ}ﻫﻫ编译后打包为classTest.jar.ﻫ3、新建一工程,将classLoader.jar和classTest.jar导入,新建class文件MyClassLoader。java并继承URLClassLoader。如下:ﻫﻫ程序代码package org.junesky。classPathTest;ﻫﻫimport java
6、.net.URL;ﻫimport java.net.URLClassLoader;ﻫimport org.junesky.classPathTest. ActionInterface;ﻫpublic classMyClassLoader extends URLClassLoader{ publicMyClassLoader(URLurl){ﻫ super(newURL[]{ url}); }ﻫ publicstatic Object test(Stringstr,St
7、ringcls) { try{ﻫ URLurl=newURL(str); MyClassLoader t =newMyClassLoader(url);Classc=t.findClass(cls);ﻫActionInterfaceaction=(ActionInterface)c.newInstance();returnaction.action();ﻫ } catch(Exception ex){ﻫ ex.pr
8、intStackTrace(); } return""; }ﻫ publicstatic void main(String[]args) {ﻫ try {ﻫ ﻫ System.out。println( ClassPathTest。test("file:D:/JavaTest/ClassTest2/lib/ MyAction.jar”,
此文档下载收益归作者所有