反编译问题。(有挑战性呀,送200分,分2次给分)------第二贴 哪位大侠能把下面的java程序反编译出来。送200分,分2次给分 程序下载地址 http://wqywqy.googlepages.com/waveinterference.jar 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想反编译下WINDOWS系统谢谢哪位同志帮下忙吧....我另外出帖子给你加分哦~~~~别想拿linux来忽悠我哦 其实吧java类反编译很简单,jdk已经有这个命令javap xx.class 我把 jar文件解压,随便找出了一个类BasicService.class 反编译得出以下结果:Compiled from "BasicService.java"public interface javax.jnlp.BasicService{public abstract java.net.URL getCodeBase();public abstract boolean isOffline();public abstract boolean isWebBrowserSupported();public abstract boolean showDocument(java.net.URL);} 用jad吧,直接把jar包放到eclipse下,然后打开里里面的类,会自动反编译的. 用Eclipse安装插件Jode Decompiler,安装方法网上很多.把要waveinterference.jar在java构建路径下引入.然后就可以像打开类一样打开*.class文件了.下面是其中的一个类/*jode*//* BarrierSideView - Decompiled by JODE * Visit http://jode.sourceforge.net/ */package edu.colorado.phet.waveinterference;import java.awt.Rectangle;import java.awt.geom.Rectangle2D;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import edu.colorado.phet.waveinterference.model.SlitPotential;import edu.colorado.phet.waveinterference.view.LatticeScreenCoordinates;import edu.colorado.phet.waveinterference.view.SlitPotentialGraphic;import edu.colorado.phet.waveinterference.view.WaveSideViewFull;public class BarrierSideView extends SlitPotentialGraphic{ private WaveSideViewFull waveSideView; private double fractionalBarrierSize = 3.0; public BarrierSideView(SlitPotential slitpotential, LatticeScreenCoordinates latticescreencoordinates, WaveSideViewFull wavesideviewfull) { super(slitpotential, latticescreencoordinates); waveSideView = wavesideviewfull; wavesideviewfull .addPropertyChangeListener("visible", new PropertyChangeListener() { { super(); } public void propertyChange (PropertyChangeEvent propertychangeevent) { update(); } }); update(); } public void update() { if (waveSideView != null) { setVisible(waveSideView.getVisible()); setPickable(getVisible()); setChildrenPickable(getVisible()); removeAllChildren(); Rectangle[] rectangles = getSlitPotential().getBarrierRectangles(); for (int i = 0; i < rectangles.length; i++) { Rectangle rectangle = rectangles[i]; if (!rectangle.isEmpty()) { Rectangle2D rectangle2d = getLatticeScreenCoordinates() .toScreenRect(rectangle); Rectangle2D.Double var_double = new Rectangle2D.Double(rectangle2d.getX(), getBarrierY(), rectangle2d.getWidth(), getBarrierHeight()); addChild(super.toShape(var_double)); break; } } } } private double getBarrierHeight() { return (getLatticeScreenCoordinates().getScreenRect().getHeight() / fractionalBarrierSize); } private double getBarrierY() { return (getLatticeScreenCoordinates().getScreenRect().getY() + (getLatticeScreenCoordinates().getScreenRect().getHeight() / 2.0) - getBarrierHeight() / 2.0); }}/***** DECOMPILATION REPORT ***** LOCATION: F:\guoyan\eclipse\workspace\test\waveinterference.jar!edu.colorado.phet.waveinterference.BarrierSideView TOTAL TIME: 0 ms ********************************/ XStream读取不到对象的属性 java删除文件 HTTP请求自动重发 如果要学structs还要先学那些??? 如何实现图片压缩包中的图片预览,急! 我用JB生成了一个包,放在D:\JB\TEST\ 下,请问我要如何配置才能将包引入到新的包中! 请问java中的哪个map实现能够按照放入集合的顺序存储? 在线等待解决技术难题:如何知道启动的应用程序结束? 我想学net包,不知道怎么学好,大家给个建议!!!! 请问哪有jdk1.3的类库手册下载!急!!! 怎么用foreach循环出来? 求救...JTable 如何多一个格拖拉移动???
谢谢哪位同志帮下忙吧....
我另外出帖子给你加分哦~~~~
别想拿linux来忽悠我哦
得出以下结果:
Compiled from "BasicService.java"public interface javax.jnlp.BasicService{public abstract java.net.URL getCodeBase();public abstract boolean isOffline();public abstract boolean isWebBrowserSupported();public abstract boolean showDocument(java.net.URL);}
把要waveinterference.jar在java构建路径下引入.
然后就可以像打开类一样打开*.class文件了.下面是其中的一个类/*jode*/
/* BarrierSideView - Decompiled by JODE
* Visit http://jode.sourceforge.net/
*/
package edu.colorado.phet.waveinterference;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;import edu.colorado.phet.waveinterference.model.SlitPotential;
import edu.colorado.phet.waveinterference.view.LatticeScreenCoordinates;
import edu.colorado.phet.waveinterference.view.SlitPotentialGraphic;
import edu.colorado.phet.waveinterference.view.WaveSideViewFull;public class BarrierSideView extends SlitPotentialGraphic
{
private WaveSideViewFull waveSideView;
private double fractionalBarrierSize = 3.0;
public BarrierSideView(SlitPotential slitpotential,
LatticeScreenCoordinates latticescreencoordinates,
WaveSideViewFull wavesideviewfull) {
super(slitpotential, latticescreencoordinates);
waveSideView = wavesideviewfull;
wavesideviewfull
.addPropertyChangeListener("visible", new PropertyChangeListener() {
{
super();
}
public void propertyChange
(PropertyChangeEvent propertychangeevent) {
update();
}
});
update();
}
public void update() {
if (waveSideView != null) {
setVisible(waveSideView.getVisible());
setPickable(getVisible());
setChildrenPickable(getVisible());
removeAllChildren();
Rectangle[] rectangles = getSlitPotential().getBarrierRectangles();
for (int i = 0; i < rectangles.length; i++) {
Rectangle rectangle = rectangles[i];
if (!rectangle.isEmpty()) {
Rectangle2D rectangle2d = getLatticeScreenCoordinates()
.toScreenRect(rectangle);
Rectangle2D.Double var_double
= new Rectangle2D.Double(rectangle2d.getX(),
getBarrierY(),
rectangle2d.getWidth(),
getBarrierHeight());
addChild(super.toShape(var_double));
break;
}
}
}
}
private double getBarrierHeight() {
return (getLatticeScreenCoordinates().getScreenRect().getHeight()
/ fractionalBarrierSize);
}
private double getBarrierY() {
return (getLatticeScreenCoordinates().getScreenRect().getY()
+ (getLatticeScreenCoordinates().getScreenRect().getHeight()
/ 2.0)
- getBarrierHeight() / 2.0);
}
}
/***** DECOMPILATION REPORT *****
LOCATION: F:\guoyan\eclipse\workspace\test\waveinterference.jar!edu.colorado.phet.waveinterference.BarrierSideView
TOTAL TIME: 0 ms
********************************/