刚学java不久,突然想这样操作试试看,javaSE提供的JDK能否,编译,修改,然后发布?
举例,比如System.out.println("Hello World");理论上是输出Hello World,但是我就是想,别人用我的jdk使用System.out.println("Hello World");输出地是确是System.out.println("CSDN"+"Hello World");想法有点bt,但我就是想实现,呵呵。我看到了在C:\Program Files\Java\jre6\lib目录下面有一个rt.jar解压以后是源码的.class 文件,我能否反编译修改里面的代码,然后再编译成 .class然后将原来的某些.class文件替换掉,然后打成jar包,这种方式可行吗?能否成功呢?我是初学者,不是很会操作,请高手指正,谢谢~~^_^
举例,比如System.out.println("Hello World");理论上是输出Hello World,但是我就是想,别人用我的jdk使用System.out.println("Hello World");输出地是确是System.out.println("CSDN"+"Hello World");想法有点bt,但我就是想实现,呵呵。我看到了在C:\Program Files\Java\jre6\lib目录下面有一个rt.jar解压以后是源码的.class 文件,我能否反编译修改里面的代码,然后再编译成 .class然后将原来的某些.class文件替换掉,然后打成jar包,这种方式可行吗?能否成功呢?我是初学者,不是很会操作,请高手指正,谢谢~~^_^
也就是说这样可行?修改rt.jar里面的源码,然后在编译。
去openjdk.java.net上下载源代码,编译一个自己的版本即可。
楼主很有想法嘛。中国程序员好像就是缺乏楼主这种创造力,哈哈,加油
哈哈,谢谢哈,不过这sun公司还是很狡猾的光公布jdk源码有啥用啊?啥时候吧JVM给公布了,那我这个痴人计划就有靠谱了~~~~
俺说的JVM源码,O(∩_∩)O~现在看JDK找到根就没了,再往下研究就卡壳了,只有学JVM才能算是正在学java吧?(幼稚想法?~~~)
import java.io.PrintStream;public class Test2 { static {
System.setOut(HelloPrintStream.getInstance());
} public static void main(String[] args) {
System.out.println("frankie");
}
}class HelloPrintStream extends PrintStream {
private static PrintStream systemPrintStream = System.out;
private static PrintStream instance = new HelloPrintStream(System.out);
public static PrintStream getInstance() {
return instance;
}
public static PrintStream getSystemPrintStream() {
return systemPrintStream;
} private HelloPrintStream(OutputStream out) {
super(out);
} @Override
public void print(String s) {
super.print("Hello: " + s);
}
}