如何读取JAR包里class12.jar文件的列表

二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
Hello World!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
文件路径:&--src& & & & &--com.test& & & & & & & & --Readjar.java& & & & & & & & --love.txtpublic class Readjar { public &void &print() & throws &IOException {& & & & & & & & // 以下如果使用File读取,打成jar包后,由于路径中有jar文件名称会读取失败。
String path = this.getClass().getClassLoader().getResource("com/test/love.txt").getPath(); &&//
String path = this.getClass().getResource("love.txt").getPath(); &//
String path = this.getClass().getResource("/com/test/love.txt").getPath(); &
System.out.println(path);&
File file = new File(path);&
// 但是使用getResourceAsStream可以直接读取jar包中的资源 & & & & InputStream is = this.getClass().getClassLoader().getResourceAsStream("com/chenwl/test/love.txt"); && & & & & BufferedReader br=new BufferedReader(new InputStreamReader(is)); & & & & & & String s=""; & &
while((s=br.readLine())!=null) & &
& & &System.out.println(s); } public &static &void &main(String[] &args) &{
new Readjar().print();
} catch (IOException e) {
e.printStackTrace();
} }}同时发现Class和ClassLoader都有getResoure和getResourceAsStream方法。做了一区别:ClassLoader调用:ClassLoader().getResourceAsStream("com/test/love.txt"); &&Class调用:this.getClass().getResourceAsStream("/com/test/love.txt"); & //以“/”开头& & & & & & & & & & & this.getClass().getResourceAsStream("love.txt"); &//不以“/”开头ClassLoader调用直接使用绝对资源名获取资源。Class调用有两种方式,其内部实现最后还是会调用ClassLoader的方法实现。只不过提供了更为灵活的方式设定文件路径,最终还是会转为ClassLoader的绝对资源名,去调用ClassLoader对应的方法,其内部转化查看Class的getResourceAsStream方法API如下:public
getResourceAsStream(&name)
查找具有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的
实现的。此方法委托此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给 。 && & &在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:
如果 name 以 '/' 开始 ('\u002f'),则绝对资源名是 '/'
后面的 name 的一部分。否则,绝对名具有以下形式:
modified_package_name/name
其中 modified_package_name 是此对象的包名,该名用 '/' 取代了 '.'
('\u002e')。
阅读(1624)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'读取jar中的文件
ClassLoader Class getResource getResourceAsStream 区别',
blogAbstract:'今天发现一个问题,在开发环境下可以读取test.txt文件。但是部署完发现报错,原来这个test.txt文件被打成jar包了。导致读取文件时无法读取。一旦被打入jar包,path就变为了xxx.jar!/aa/bb/test.txt.无法通过jar文件生成File。此时google发现可以通过class或者classloader的getResourceAsStream()方法直接获取流文件,读取jar包中的资源(xml、图片、音乐等资源文件)文件路径:&--src& & & & &--com.test& & & & & & & & --Readjar.java',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'Hello World!',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在MyEclipse中如何用查看引用的jar包中的class文件的java源代码?
在MyEclipse中如何用查看引用的jar包中的class文件的java源代码?
09-09-02 &
看jar包里的信息 myeclipse如果是最新的话,spring和hibernate各种版本都有,spring1.2和2.0 hibernate2.0,3.1的都有0 回答者: zidane_xue - 经理 四级   9-5 16:51
请登录后再发表评论!
如果你知道jar包中的类名,可以按ctrl键不放 +鼠标左键点击该类名,就会 跟踪到你想要看的类名。
请登录后再发表评论!
要看jar包里的java源文件,只能去网上下载源文件,在jar包里是看不到源代码的。
请登录后再发表评论!jar包内读取资源文件_百度知道
jar包内读取资源文件
jar包内读取资源文件:Java代码
//源代码1:
package edu.
import java.io.*;
public class Resource {
void getResource() throws IOException{
File file=new File(&bin/resource/res.txt&);
BufferedReader br=new BufferedReader(new FileReader(file));
String s=&&;
while((s=br.readLine())!=null)
System.out.println(s);
这段代码写在Eclipse建立的java Project中,其目录为:(其中将资源文件res.txt放在了bin目录下,以便打成jar包)
1、src/
src/edu/hxraid/Resource.java
2、bin/
bin/resource/res.txt
bin/edu/hxraid/Resource.class
很显然运行源代码1是能够找到资源文件res.txt。但当我们把整个工程打成jar包以后(ResourceJar.jar),这个jar包内的目录为:
edu/hxraid/Resource.class
resource/res.txt
而这时jar包中Resource.class字节码:ldc &String &bin/resource/res.txt&& [20] 将无法定位到jar包中的res.txt位置上。就算把bin/目录去掉:ldc &String &resource/res.txt&& [20] 仍然无法定位到jar包中res.txt上。
这主要是因为jar包是一个单独的文件而非文件夹,绝对不可能通过&file:/e:/.../ResourceJar.jar/resource /res.txt&这种形式的文件URL来定位res.txt。所以即使是相对路径,也无法定位到jar文件内的txt文件(读者也许对这段原因解释有些费解,在下面我们会用一段代码运行的结果来进一步阐述)。
其他类似问题
为您推荐:
提问者采纳
调用jar包中的Resource类都可以获得jar包中的res.txt&quot.txt文件了!=null) S/源代码3.io.getClass();.getClass():
while((s=/;/
public class Resource {
public void getResource() throws IOException{
/&quot,再也不会找不到&#47.Rbin目录中的edu&#47.println(s).txt资源; } }
我们将java工程下/返回读取指定资源的输入流 InputStream is=返回读取指定资源的输入流
InputStream is=
while((s= public class Resource { public void getResource() throws IOException{ &#47,不管jar包在系统的任何目录下!=null)
/ import java:
/&res.源代码3.getResourceAsStream(&quot.println(s).*.readLine());); String s=&
String s=&).class和资源文件resource&#47.hxraid.readLine()).getResourceAsStream(&quot.jar中;hxraid&#47.*.resource/resource&#47.txt一并打包进ResourceJ BufferedReader br=new BufferedReader(new InputStreamReader(is)).
BufferedReader br=new BufferedReader(new InputStreamReader(is));&#47&#47.txt&quot
提问者评价
问题已经解决了
资源文件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 jar main class 的文章

 

随机推荐