package com.tom.labs;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class CompilerTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String source = "public class Main { " +
" public static void main(String[] args) {" +
" System.out.println(\"Hello World!\");" +
" }" +
" public static void test() { " +
" System.out.println(\"Hello World!\");" +
" } " +
"}";
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
StringSourceJavaObject sourceObject = new CompilerTest.StringSourceJavaObject("Main", source);
Iterable fileObjects = Arrays.asList(sourceObject);
CompilationTask task = compiler.getTask(null, fileManager, null, null, null, fileObjects);
boolean result = task.call();
if (result) {
ClassLoader loader = CompilerTest.class.getClassLoader();
Class<?> clazz = loader.loadClass("com.tom.labs.Main");
Method method = clazz.getMethod("test", new Class<?>[] {});
method.invoke(null, new Object[] {});
}
}
static class StringSourceJavaObject extends SimpleJavaFileObject {
private String content = null;
public StringSourceJavaObject(String name, String content) throws URISyntaxException {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.content = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return content;
}
}
}
有人能帮我吗?更新:
我打印出了getMethods的输出:[public static void com.tom.labs.main.main(java.lang.String[]),public final void java.lang.object.wait(long,int)抛出java.lang.interruptedexception,public final native void java.lang.object.wait(long)抛出java.lang.interruptedexception,public final void java.lang.object.wait()抛出java.lang.interruptedexception,public
很奇怪,方法测试不在里面。
您的“来源”
String source = "public class Main { " +
" public static void main(String[] args) {" +
" System.out.println(\"Hello World!\");" +
" }" +
" public static void test() { " +
" System.out.println(\"Hello World!\");" +
" } " +
"}";
没有命名空间。您应该向其添加一个package关键字,或者更改
Class<?> clazz = loader.loadClass("com.tom.labs.Main");
至
Class<?> clazz = loader.loadClass("Main");
问题内容: 如何将Android DEX(VM字节码)文件反编译为相应的Java源代码? 问题答案: It’s easy 获取以下工具: 1)dex2jar将dex文件转换为jar文件 2)jd-gui查看jar中的java文件 由于dex2jar进行了一些优化,因此源代码具有很高的可读性。 Procedure:: 这是有关如何反编译的过程: 步骤1: 将中的转换为 注1:在Windows计算机上
本文向大家介绍java 反射和动态代理详解及实例代码,包括了java 反射和动态代理详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 一、java中的反射 1.通过反射加载类的属性和方法实例代码: 2.类加载器ClassLoader 3.动态代理 静态代理:代理类和目标对象的类型都是在编译期间确定下来,不利于程序的扩展。同时每个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。
当我使用ctrl+右键单击打开一个特定的类时,我应该被重定向到一个带有java源代码的窗口,该窗口包含所有行和适当的注释。但相反,我得到了一个带有反编译的。class文件的窗口。
编译solidity源代码 通过solc编译器编译solidity代码到字节码。你可以参考solidity安装文档在本地安装编译器。 编写solidity代码运行: $ solc <contract>.sol --bin --abi --optimize -o <output-dir>/ bin和ABI编译器参数都需要充分利用web3j中的智能合约。 bin,输出包含十六进制编码的solidit
主要内容:本节引言,1.要准备的三个工具,2.使用apktool反编译APK获得图片与XML资源:,3.使用dex2jar将classes.dex转换成jar文件:,4.使用jd-gui查看jar包中的Java代码:,本节小结本节引言 "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载
本文向大家介绍Java 反射机制详解及实例代码,包括了Java 反射机制详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 Java反射详解 本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。 下面开始正文。 【案例1】通过一个对象获得完整的包名和类名 【运行结果】:Reflect.D