如何查看class文件以及自动下载对应的src包

在java开发过程中,很多时候,我们使用的别人的东西都是jar包,当我们需要看别人的实现的时候,我们就需要下载别人的源码,然后关联

这个时候,问题很多

有没有简单的办法呢?

还是有的。

可以安装一个反编译的插件jad

反编译插件安装jad(转)


这样就可以看了。

真是很好的东西。

写在这里为了记录一下。


在说一个eclipse插件,可以下载开源的java库代码

http://blog.csdn.net/zsmj_2011/article/details/29403453 不错的eclipse插件

Java Source Attacher




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XDoclet 是一个通用的代码生成实用程序,是一个扩展的Javadoc Doclet引擎,它允许您使用象 JavaDoc 标记之 类的东西来向诸如类、方法和字段之类的语言特征添加元数据。随后,它利用这些额外的元数据来生成诸如部署描述符和源代码之类的相关文件。可以让你创建自己 的javadoc @tags进而利用XDoclet中的Templet enging基于这些@tags生成源代码或其他文件(例如xml的deployment descriptors)。 XDoclet 继承了 JavaDoc 引擎的思想,允许根据定制 JavaDoc 标记生成代码和其他文件。当然,XDoclet 也可以访问整个解析树。这样,它就可以访问类、类的结构和类的方法。 Xdoclet由三个主要组件组成、Xjavadoc引擎,Xdoclet引擎和模块。模块又由任务、子任务、标记处理程序和模板。 XJavaDoc 引擎:XJavaDoc 解析 Java 源文件,然后构建有关类和语言特征(、方法和字段)以及元数据的信息树。XJavaDoc 引擎通过一个易于使用的 API 提供访问。该 API 提供了与带有一些额外特征的 JavaDoc API 相同的类信息,这些额外特征与存储及读取元数据以及其他结构相关联。XJavaDoc 增加了在运行时修改 JavaDoc 标记的能力。这样就可以推断元数据,并可以将其缺省值设为比较合理的值。 XDoclet 引擎:XJavaDoc 引擎读取标记,这些标记组成了类的元数据和结构。XDoclet 引擎使用来自 XJavaDoc 引擎的信息,来生成支持文件(源代码和部署描述符)。XDoclet 提供了一个优秀的模板生成引擎,该引擎将模板转换成一个或多个支持文件。XDoclet 有一个模块装入程序,它动态地装入用 xdoclet.xml 文件含在模块的 jar 文件中)指定的 XDoclet 模块。 您无需创建模块就可创建模板。每个顶级 XDoclet Ant 任务都有执行任意模板的能力,以此替换随模块一起提供的模板。 模块引擎:模块由任务、子任务、标记处理程序和模板组成。 目前的版本可以为web(web.xml)、ejb、struts(struts-config.xml)、webwork、hibernate (mapping file)、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。 我们只须在项目中引入xjavadoc-1.1.jar、xdoclet-hibernate-module-1.2.3.jar等等所需要的jar就可以了。以下是我在项目中写的一些类。 例如 action 类 …… import org.apache.struts.action.ActionForward; /** * * @author yangjuqi 2007-06-13 * @struts.action name="biddingForm" path="/carriageBidQuery" validate="false" * @struts.action-forward name="success" path="ship.bid.carriage.search" */ public class CarriageBidQueryAction extends BaseAction { protected ActionForward execute(BActionContext context) throws Exception { System.out.println("------- CarriageBidQueryAction execute -----"); String markey=context.getRequest().getParameter("markey"); if(markey==null || markey.equals("0")){ return this.queryBiddingAll(context); } return null; } …… 在struts-config.xml中生成如下代码: <action path="/carriageBidQuery" type="com.baosight.baosteel.bli.lgs.bid.struts.action.CarriageBidQueryAction" name="biddingForm" scope="request" unknown="false" validate="false" > <forward name="success" path="ship.bid.carriage.search" redirect="false" /> </action> 例如 model(与数据库中的表对应)类 …… /** * @author yangjuqi 2007-07-18 * * @hibernate.class table="LGS_INVITED_CARRIER" */ public class InvitedCarrierModel implements java.io.Serializable { private Long id; private String carrierCompanyCode; private Long biddingId; /** * @hibernate.property column="BIDDING_ID" type="long" */ public Long getBiddingId() { return biddingId; } public void setBiddingId(Long biddingId) { this.biddingId = biddingId; } …… 在指定的目录中生成文件InvitedCarrierModel.hbm.xml,代码如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.baosight.baosteel.bli.lgs.model.InvitedCarrierModel" table="LGS_INVITED_CARRIER" > …… <property name="biddingId" type="long" update="true" insert="true" column="BIDDING_ID" /> …… </class> </hibernate-mapping> 在Build.xml中的关于Xdoclet的配置如下: <target name="generateHibernateConf" depends="init"> <taskdef name="hibernatedoclet" classname="xdoclet.modules.hibernate.HibernateDocletTask"> <classpath refid="classpath" /> </taskdef> <hibernatedoclet destdir="${conf.hibernate}"> <fileset dir="${src}"> <include name="**/*.java" /> </fileset> <hibernate version="3.0" /> </hibernatedoclet> </target> <target name="generateStrutsConf" depends="init"> <taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask"> <classpath refid="classpath" /> </taskdef> <webdoclet destdir="${conf.struts}"> <fileset dir="${src}" includes="**/*.java" /> <strutsconfigxml version="1.2" destdir="${conf.struts}" mergeDir="${conf-merge.struts}" /> </webdoclet> </target> 像@hibernate.clas、@hibernate.property、@struts.action-forward等等这些特定的注释标签需要去查XDoclet的相关文档了,Xdoclet对目前流行的多种框架、技术都提供了相关的支持。 这样,我们就能在使用ant编译工程的同时,使Xdoclet为我们生成相关的配置文件了。
discuz同一个网站使用不同域名访问时,论坛关键字.标题,logo背景图等对应切换的插件 anyou文件夹.及ay.php放在根目录中 一,需要缓存的文件.需要加上 require './anyou/my.php'; 二 ay.php为后台管理文件,需要先登录论坛管理员 三,修改后.会在anyou/temp/host 目录中生成md5加密的缓存文件.不同域名访问时,会自动读取这里面的配置文件. 四.template\域名目录名\common\header.htm 需要修改这个文件 在里面增加自动定义的logo 背景图等 1,背景图的修改 \header.htm 中32行增加下面这三行,注意bgcode表示后台模板编辑中.自定义的背景图片.不过,只能定义一个,但是要实现几个域名,显示不同的图片,这里修改一定没效果,只能修改anyou/temp/host 里面的缓存文件,找到里面的 'bgcode' => '', 修改为类似这种,qianpad.jpg表示背景图片 'bgcode' => 'background: #E8E7E7 url("./template/模板目录注意修改/images//qianpad.jpg") no-repeat 50% 0px', <style type="text/css"> body{{$_G['style']['bgcode']}} </style> 2,logo修改\header.htm .其中{$_G['style']['boardlogo']}就是缓存中定义的logo 类似 'boardlogo' => '<img src="template/smarts_lis/style/img/logo.png" alt="4356345" border="0" />', 模板中这样调用: <div class="hdc cl"> <h2><!--{if !isset($_G['setting']['navlogos'][$mnid])}--><a href="{if $_G['setting']['domain']['app']['default']}http://{$_G['setting']['domain']['app']['default']}/{else}./{/if}" title="$_G['setting']['bbname']">{$_G['style']['boardlogo']}</a><!--{else}-->$_G['setting']['navlogos'][$mnid]<!--{/if}--></h2> </div> 关键字等应该是修改header_common.htm
在 Vant 组件中,如果你有一个自定义的 Icon 图标文件(通常是 SVG 格式),你可以使用 `Icon` 组件的 `class-prefix` 属性来引用自定义 Icon 的 class 名称。 以下是使用自定义 Icon 的步骤: 1. 首先,将自定义的 Icon 图标文件(通常是 SVG 格式)放置在项目的某个目录下,比如 `src/icons`。 2. 在需要使用自定义 Icon 的页面中,使用 Vant 的 `Icon` 组件,并通过 `class-prefix` 属性指定自定义 Icon 的 class 名称前缀。 ```vue <template> <div> <van-icon class-prefix="my-icon" name="home" /> <van-icon class-prefix="my-icon" name="user" /> </div> </template> <script> import { Icon } from 'vant'; export default { name: 'MyComponent', components: { VanIcon: Icon, }, }; </script> ``` 在上述代码中,`class-prefix` 属性被设置为 `"my-icon"`。这意味着 Vant 的 `Icon` 组件将会为图标元素添加一个类名为 `"my-icon-{name}"` 的 class。 3. 在自定义的 Icon 图标文件中,为每个图标元素添加与 `class-prefix` 属性匹配的类名。 例如,假设你有一个自定义的 Icon 图标文件 `src/icons/my-icon.svg`,其中含了名为 `"home"` 和 `"user"` 的两个图标元素。 ```html <!-- src/icons/my-icon.svg --> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path class="my-icon-home" d="M12 2L3 9h3v13h12V9h3L12 2z"/> </svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path class="my-icon-user" d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/> </svg> ``` 这样,当你在页面中使用 `Icon` 组件,并指定了 `class-prefix` 属性为 `"my-icon"`,Vant 将会自动添加对应的类名 `"my-icon-home"` 和 `"my-icon-user"` 到图标元素上。 请确保自定义的 Icon 图标文件中的类名与 `class-prefix` 属性匹配,这样 Vant 的 `Icon` 组件才能正确渲染自定义的 Icon 图标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值