本帖最后由 Rlay_2 于 2013-01-24 19:54:00 编辑

解决方案 »

  1.   

    以我的理解能力 觉得是没有办法的,但是你可以 试试动态代理什么的东西, 
    ASM 是一个 Java 字节码操纵框架。它可以直接以二进制形式动态地生成 stub 类或其他代理类,或者在装载时动态地修改类。ASM 提供类似于 BCEL 和 SERP 之类的工具包的功能,但是被设计得更小巧、更快速,这使它适用于实时代码插装。 可以从这下点功夫试试
      

  2.   

    跟ASM包的字节码分析工具无关,楼主需要的是热编译。java可以热编译,标准API 提供了接口。 看下这个 javax.tools.JavaCompilerhttp://docs.oracle.com/javase/7/docs/api/javax/tools/JavaCompiler.html
      

  3.   

    java没有很方便的方法来实现向诸如此类脚本语言的特性,即便你用楼上的方法,运行期热编译虽然很炫,但我觉得与其这样做你肯定能找到其他方法绕过这种方式,因为本来是为了方便,而这样做更复杂了,并且JavaCompiler需要javac如果没理解错的话,这就是说你的程序运行期需要jdk而不是jre,这对客户来说更不方便
      

  4.   

    1、java中的类编译、装载过程应该都是以类为单位的,这种字符串经过编译后应该就成了普通字符串,不能生成执行指令了。
    2、如果楼主是要动态生成一个类还是可以的,生成指令没想到能有什么办法
      

  5.   

    javassist和cglig底层用的是asm就可以动态根据java代码直接生成字节码文件
      

  6.   


    楼主可以研究一下javassist,直接添加到原来的方法中,很爽的!
      

  7.   

    这个也不难啊,说下我的思路将这些字符串代码写入一个java文件里,然后采用ant动态编译或者你在程序里自己调用javac来编译生成的java文件也可以,这样不就可以了然后你再在要调用的地方,采用反射的机制把生成的类注入进来就可以啦,如果你的这段代码是要嵌入到某个已有的java文件里,那就更简单了,还是采用文件输入输出的功能,将你的这段代码写入java文件里,比如某个java文件的某一方法里然后再动态编译下就OK啦
      

  8.   

    javassist和cglib就是干这个的直接动态生成字节码到内存中,不像jdk1.6里自带的JavaCompiler会生成.java文件到文件夹,再用ClassLoader进行load,然后再执行。
      

  9.   


    那要看楼主他们用的是什么版本的jdk了
      

  10.   


    基本的思路应该是这样的,就想问下,这样操作java的情况多吗?会不会到时候bug一堆啊?
      

  11.   


    太多了,SSH框架里,反射满天飞的!!!
      

  12.   

    表达式引擎可以满足你的要求,百度一下java 表达式引擎,很多开源实现
      

  13.   


    唯一讲到点子上的人!!楼主这种奇怪的需求,十有八九是由糟糕的设计造成的。
    楼上很多其他人连java 代码和java 字节码都分不清,就来乱讲。