怎样获得一个jar里面的class呢? 你想调用的话就把文件拷过来;你想看看class的话就把这个jar文件解压缩了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.rar/zip解开jar文件就可以了。2.jar xvf xxx.jar 可是我要在程序里动态获得啊,所以用jar工具显然不行,think it again! 把此文件的路径加入classpath不就行了?然后import 过来 http://expert.csdn.net/Expert/TopicView2.asp?id=1244583&datebasetype=now用这个就行了 :) 源代码如下,其功能为直接将JAR文件中的所有目录名和文件名打印到屏幕,同时也打印META-INF/Manifest.mf文件中的所有属性//JarTest.javaimport java.util.zip.*;import java.util.jar.*;import java.util.*;public class JarTest{ public JarTest() { } public static void main(String[] args) throws Exception { if (args.length !=1 ) usage(); JarFile jar = new JarFile(args[0]); Enumeration entries = jar.entries(); //打印JAR文件中的所有目录名和文件名 while (entries.hasMoreElements()) { Object o = entries.nextElement(); System.out.println(o); } // 下面这段代码可以取得META-INF/MANIFEST.MF文件中的所有属性信息 Manifest man = jar.getManifest(); Attributes attrs = man.getMainAttributes(); Set set = attrs.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) { Object o = i.next(); // 打印属性信息 System.out.println(o); } } public static void usage() { System.out.println("java -cp . JarTest jarfile(or zipfile)"); }} 各位大师: 谢谢大家的热情,可我面临的问题是:位于文件系统某目录下的一个jar文件,它并不在classpath下,要想获得该jar文件里的class文件,我说的获得不仅仅是找到class这个名字就算啦,还要装载它,并获得该class文件里包和方法信息,又该如何呢? import java.lang.reflect.*;/** * 获取指定CLASS内的信息(方法,包) */public class ClassInfo{ public ClassInfo() { } public static void main(String[] args) throws Exception { String fullClassName ; if (args.length != 1) { fullClassName = "java.lang.String"; } else { fullClassName = args[0]; } Class cls = Class.forName(fullClassName); // (1.) 创建实例 Object o = cls.newInstance(); // (2.) 取得package名 Package pack = cls.getPackage(); String packageName = pack.getName(); System.out.println("package: " + packageName); System.out.println(); // (3.) 取得类名 String className = cls.getName(); System.out.println("class name: " + className); System.out.println(); // (4.) 取成员变量名 Field [] fields = cls.getFields(); int i; System.out.println("成员变量"); for (i=0; i<fields.length; i++) { System.out.println(" " + fields[i].toString()); } System.out.println(); // (5.) 取得成员方法 Method [] methods = cls.getMethods(); System.out.println("成员方法"); for (i=0; i<methods.length; i++) { System.out.println(" " + methods[i].toString()); } }} 楼上的提供的程序没错,但你所解决的问题是针对classpath下的class情况吧,问题是我面临的问题是文件系统下任意目录下jar包里的class啊,其实首先要解决的问题是这个jar在程序里怎样装载,然后才可能从jar里获的class的信息吧,我看到JarURLConnection这个class,不知道能否有帮助。再帮我想想! 你自己现在可以读这个JAR中的CLASS文件的话你可以重新写一个装载器,你可以看一下JDK中的原码就知道了 ???你总要给个路径把,要不你系统里那么多jar你要全扫瞄一遍?你想要做的到底是什么,没懂 在muymuy(muy) 的类中加入路径输入处理。1、将系统“ENVIORMENT”中的“CLASSPATH”项获得;2、将输入的路径加上指定的“JAR”文件名后与获得的“CLASSPATH”项字符串相加,得到新的地“CLASSPATH”项值;3、将新的“CLASSPATH”项字符串设成本程序运行环境的“CLASSPATH”。其他的就按muymuy(muy) 的吧!试试看吧. 想在程序里动态更改CLASSPATH的值,根本不可行!!!要知道每次运行java开始就确定了classpath,即使你重新设置也不起作用啊!我已知道怎样装载一个文件系统下的class,可前提是我已经知道了该class的包结构信息,然而,这事先我并不知道,我打算从程序里动态获得,所以我想装载包含class及其包结构的jar文件,可是又不知道如何装载jar文件,哎,好苦恼啊!大家一起努力吧!!@ 我想不可以吧??万一没有你想装载的class怎么办?这一点也应该要考虑吧? 什么不可以呀?我要装载的class当然事先我知道在那个jar文件里罗,只是不知道这个class的包结构而已啊!现在大家只要考虑怎样在程序里动态加载jar文件问题就完全解决了!继续吧@ 求救,报错:java.lang.OutOfMemoryError:Java heap space java解码 -- BMP图片 java怎么调用oracle有返回值的函数? 小问题哦~ 关于 i ++; 禁用后的 按钮 怎么启用? 如何在Canvas里面画出一个JButton? 用swing开发、怎样实现分隔线的功能? 请问这是怎么回事? 请高手回答这个问题,请注意看注释部分 Applet程序如何在运行时使一个panel控件自动执行鼠标双击事件? 一个简单问题,给分! JBuilder8为何不能编译以前的文件?
2.jar xvf xxx.jar
然后import 过来
import java.util.jar.*;
import java.util.*;public class JarTest
{ public JarTest()
{
} public static void main(String[] args) throws Exception
{
if (args.length !=1 )
usage();
JarFile jar = new JarFile(args[0]); Enumeration entries = jar.entries(); //打印JAR文件中的所有目录名和文件名
while (entries.hasMoreElements())
{
Object o = entries.nextElement();
System.out.println(o);
} // 下面这段代码可以取得META-INF/MANIFEST.MF文件中的所有属性信息
Manifest man = jar.getManifest();
Attributes attrs = man.getMainAttributes();
Set set = attrs.entrySet();
Iterator i = set.iterator();
while(i.hasNext())
{
Object o = i.next();
// 打印属性信息
System.out.println(o);
}
} public static void usage()
{
System.out.println("java -cp . JarTest jarfile(or zipfile)");
}
}
谢谢大家的热情,可我面临的问题是:位于文件系统某目录下的一个jar文件,它并不在classpath下,要想获得该jar文件里的class文件,我说的获得不仅仅是找到class这个名字就算啦,还要装载它,并获得该class文件里包和方法信息,又该如何呢?
import java.lang.reflect.*;/**
* 获取指定CLASS内的信息(方法,包)
*/public class ClassInfo
{ public ClassInfo()
{
} public static void main(String[] args) throws Exception
{
String fullClassName ;
if (args.length != 1)
{
fullClassName = "java.lang.String";
}
else
{
fullClassName = args[0];
} Class cls = Class.forName(fullClassName); // (1.) 创建实例
Object o = cls.newInstance(); // (2.) 取得package名
Package pack = cls.getPackage();
String packageName = pack.getName();
System.out.println("package: " + packageName);
System.out.println(); // (3.) 取得类名
String className = cls.getName();
System.out.println("class name: " + className);
System.out.println(); // (4.) 取成员变量名
Field [] fields = cls.getFields();
int i;
System.out.println("成员变量");
for (i=0; i<fields.length; i++)
{
System.out.println(" " + fields[i].toString());
}
System.out.println(); // (5.) 取得成员方法
Method [] methods = cls.getMethods();
System.out.println("成员方法");
for (i=0; i<methods.length; i++)
{
System.out.println(" " + methods[i].toString());
}
}
}
我已知道怎样装载一个文件系统下的class,可前提是我已经知道了该class的包结构信息,然而,这事先我并不知道,我打算从程序里动态获得,所以我想装载包含class及其包结构的jar文件,可是又不知道如何装载jar文件,哎,好苦恼啊!大家一起努力吧!!@
现在大家只要考虑怎样在程序里动态加载jar文件问题就完全解决了!继续吧@