10 个解决方案
#1
这个肯定是包路径的问题撒
#2
getClass().getResourceAsStream("/xxx.xml");
#3
很多编程的习惯是不好的,直接使用使用相对路径或者绝对路径访问本机文件就是一个,去而代之的是getClass().getResource("/xxx.xml")或者getClass().getResourceAsStream("/xxx.xml");
#4
非常感谢楼上的方法 解决了 不过我这多加了一个classLoader this.getClass().getClassLoader().getResourceAsStream("/xxx.xml")
那我要是读取jar的class怎么解决了,原项目中的是配置entity类的包路径,如:net.csdn.java.entity,然后转换成Bin目录中的位置,遍历其中扩展名为.class的文件,依次反射,现在这些class打在Jar中了该怎么弄了,刚试了InputStream url=this.getClass().getClassLoader().getResourceAsStream("net/csdn/java/entity"),原项目中可以读取entity里面的文件,打成包之后就报空指针,该怎么解决了
那我要是读取jar的class怎么解决了,原项目中的是配置entity类的包路径,如:net.csdn.java.entity,然后转换成Bin目录中的位置,遍历其中扩展名为.class的文件,依次反射,现在这些class打在Jar中了该怎么弄了,刚试了InputStream url=this.getClass().getClassLoader().getResourceAsStream("net/csdn/java/entity"),原项目中可以读取entity里面的文件,打成包之后就报空指针,该怎么解决了
#5
不太清楚具体情况,也不是很清楚怎么一回事
#6
就是我之前没打包之前通过读取类似net.csdn.java.entity包中的类,然后都反射出来,现在这个项目打包了,不好读取jar文件net.csdn.java.entity包中的类名
#7
如果项目打包了,将Jar文件添加到新的项目里面,可以首先将想反射的类名加载到JVM当中,然后利用反射处理Class.forName()或其他方法获得对应类的Class没任何问题啊,你想怎么干?
#8
Class.forName(),是可以,但前提是得知道类的全路径名称,如net.csdn.java.entity.bbs;现在net.csdn.java.entity这个包中的类名及个数都是未知的,我得必须先读出里面的类名,才能反射
#9
老大,java反射肯定要有类名,没有类名不可能反射。如果能,那还不乱了套了。
没有好的方法通过程序能搞到类名,除非你自己写个方法,解析jar包里面所有的class文件的名称获得,不过这个也是个思路,问题是你解析了之后,怎么知道哪个类名是你想反射的类,哪个又不是呢?
没有好的方法通过程序能搞到类名,除非你自己写个方法,解析jar包里面所有的class文件的名称获得,不过这个也是个思路,问题是你解析了之后,怎么知道哪个类名是你想反射的类,哪个又不是呢?
#10
读出jar中net.csdn.java.entity包中的.class就可以了,你这个方法确实是个思路,非常感谢你给我解答这么多
#1
这个肯定是包路径的问题撒
#2
getClass().getResourceAsStream("/xxx.xml");
#3
很多编程的习惯是不好的,直接使用使用相对路径或者绝对路径访问本机文件就是一个,去而代之的是getClass().getResource("/xxx.xml")或者getClass().getResourceAsStream("/xxx.xml");
#4
非常感谢楼上的方法 解决了 不过我这多加了一个classLoader this.getClass().getClassLoader().getResourceAsStream("/xxx.xml")
那我要是读取jar的class怎么解决了,原项目中的是配置entity类的包路径,如:net.csdn.java.entity,然后转换成Bin目录中的位置,遍历其中扩展名为.class的文件,依次反射,现在这些class打在Jar中了该怎么弄了,刚试了InputStream url=this.getClass().getClassLoader().getResourceAsStream("net/csdn/java/entity"),原项目中可以读取entity里面的文件,打成包之后就报空指针,该怎么解决了
那我要是读取jar的class怎么解决了,原项目中的是配置entity类的包路径,如:net.csdn.java.entity,然后转换成Bin目录中的位置,遍历其中扩展名为.class的文件,依次反射,现在这些class打在Jar中了该怎么弄了,刚试了InputStream url=this.getClass().getClassLoader().getResourceAsStream("net/csdn/java/entity"),原项目中可以读取entity里面的文件,打成包之后就报空指针,该怎么解决了
#5
不太清楚具体情况,也不是很清楚怎么一回事
#6
就是我之前没打包之前通过读取类似net.csdn.java.entity包中的类,然后都反射出来,现在这个项目打包了,不好读取jar文件net.csdn.java.entity包中的类名
#7
如果项目打包了,将Jar文件添加到新的项目里面,可以首先将想反射的类名加载到JVM当中,然后利用反射处理Class.forName()或其他方法获得对应类的Class没任何问题啊,你想怎么干?
#8
Class.forName(),是可以,但前提是得知道类的全路径名称,如net.csdn.java.entity.bbs;现在net.csdn.java.entity这个包中的类名及个数都是未知的,我得必须先读出里面的类名,才能反射
#9
老大,java反射肯定要有类名,没有类名不可能反射。如果能,那还不乱了套了。
没有好的方法通过程序能搞到类名,除非你自己写个方法,解析jar包里面所有的class文件的名称获得,不过这个也是个思路,问题是你解析了之后,怎么知道哪个类名是你想反射的类,哪个又不是呢?
没有好的方法通过程序能搞到类名,除非你自己写个方法,解析jar包里面所有的class文件的名称获得,不过这个也是个思路,问题是你解析了之后,怎么知道哪个类名是你想反射的类,哪个又不是呢?
#10
读出jar中net.csdn.java.entity包中的.class就可以了,你这个方法确实是个思路,非常感谢你给我解答这么多