Java°æµÄʵÏÖJavaScriptÖеÄeval()º¯Êý
ʵÏÖ²½Ö裺
1.×Ô¶¨ÒåÒ»¸öJavaÀ࣬¸ÃJavaÀàÖж¨ÒåÒ»¸ö·½·¨À´°üº¬ÐèÒª±»ÔËÐеĴúÂë¡£
2.¶¯Ì¬±àÒë¸Õ¸ÕÉú³ÉµÄJavaÔ´Â룬²»ÔÚ´ÅÅÌÉÏÉú³ÉÔ´Â룬¶øÊÇÖ±½Ó±àÒëÄÚ´æÖеÄJavaÔ´Âë¡£
3.¶¯Ì¬¼ÓÔØ¸Õ¸Õ´´½¨±àÒëµÄJava¶þ½øÖÆÂ룬±àÒëºÃµÄJava¶þ½øÖÆÂë²»ÊÇÔÚ´ÅÅÌÉÏ£¬¶øÊÇ·ÅÔÚÄÚ´æÖУ¬²¢¶¨Òå×Ô¼ºµÄÀà¼ÓÔØÆ÷£¬¸ºÔð¼ÓÔØÄÚ´æÖеÄclassÎļþ¡£
4.ͨ¹ý·´ÉäÔËÐÐǰһ²½¼ÓÔØµÄÀà¡£
import java.util.Arrays;
import javax.tools.SimpleJavaFileObject;
import javax.tools.JavaFileObject;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import javax.tools.DiagnosticCollector;
import java.net.URI;
/**
* Description:
* <br/>ÍøÕ¾: <a href="http://www.crazyit.org" mce_href="http://www.crazyit.org">·è¿ñJavaÁªÃË</a>
* <br/>Copyright (C), 2001-2010, Leeyohn
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Leeyohn leeyohn@hotmail.com
* @version 1.0
*/
public class MyClassLoader
extends ClassLoader
{
@Override
public Class<?> findClass(String str) throws ClassNotFoundException
{
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
//ÓÃÓÚÕï¶ÏÔ´´úÂë±àÒë´íÎóµÄ¶ÔÏó
DiagnosticCollector diagnostics = new DiagnosticCollector();
//ÄÚ´æÖеÄÔ´´úÂë±£´æÔÚÒ»¸ö´ÓJavaFileObject¼Ì³ÐµÄÀàÖÐ
JavaFileObject file = new JavaSourcefromString("Temp", str.toString());
Iterable compilationUnits = Arrays.asList(file);
//½¨Á¢Ò»¸ö±àÒëÈÎÎñ
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null, null, null, compilationUnits);
//±àÒëÔ´³ÌÐò
boolean result = task.call();
if (result)
{
return Class.forName("Temp");
}
return null;
}
}
class JavaSourcefromString extends SimpleJavaFileObject
{
private String name;
private String code;
public JavaSourcefromString(String name, String code)
{
super(URI.create("strin
Ïà¹ØÎĵµ£º
´Ó½ñÌ쿪ʼ, ÎÒÒª½«°ÑThinking in JavaµÄÿ¸öÀý×Ó¶¼ÇýøµçÄÔÀï, Ö»ÓÐÕâÑùÎÒµÄjava»ù´¡²Å»áÓÐÖʵÄÌá¸ß.
¼ÇµÃÒÔǰÓÐÈË˵¹ý, ×µÄ·½·¨ÍùÍù¾ÍÊǽݾ¶,¹Ø¼üÔÚÓÚ¼á³Ö.
¼¼ÊõÒ²ÊÇÕâÑù.
½ñÌìÏÈ´Ó×Ô¼º½Ï¸ÐȤµÄType InformationÄÇÒ»ÕÂÇÃÆð.
ÇÃÁËÊ®¼¸¸öÎļþµÄ´úÂë, ¶ÔClass ÀàµÄʹÓÿÉνÊì͸ÁË. Ïà±ÈÒÔǰ, ¹â¿´Êé²»Á·Ï°, ÏÖÔÚµÄÓ¡Ï ......
1. ×ÜÌåÉè¼Æ
1.1 »ù±¾Éè¼Æ¸ÅÄîºÍ´¦ÀíÁ÷³Ì
1.1.1 ³ÌÐò»®·Ö
Ö÷Òª·ÖΪ·þÎñ¶ËºÍ¿Í»§¶ËÁ½¸ö²¿·Ö¡£
¿Í»§¶Ë²¿·ÖÓÖ·ÖΪͬ²½ÓëÒì²½Á½ÖÖģʽ¡£
1.1.2 ´¦ÀíÁ÷³ÌÃèÊö
JAVA°æ½Ó¿Úƽ̨Ö÷ҪʵÏÖÓëÍⲿ½Ó¿ÚµÄ·þÎñ¶ËºÍ¿Í»§¶ËµÄꬄ ......
*------------------------------------------------------
*˵Ã÷£ºselectÔªËØjavascript³£ÓòÙ×÷
* 1.ÅжÏÊÇ·ñ´æÔÚÖ¸¶¨valueµÄItem
* 2.¼ÓÈëÒ»¸öItem
* 3.ɾ³ýֵΪvalueµÄËùÓÐItem
* 4.ɾ³ýijһ¸öindexµÄÑ¡Ïî
  ......
¸Õ´ÓÍøÉÏ¿´µ½cºÍjava»ì±àµÄÎÄÕ£¬¾Íؽ²»¿É´ýµÄ³¢ÊÔÁËһϡ£ºÇºÇ£¬Ð§¹û»¹ÊǺܺõġ£ÏÂÃæ½«×Ô¼º³É¹ûÕ³Ìù³öÀ´
£¨×ªÔØÓÚhttp://www.zxbc.cn/html/20070518/19986.html£©¡£ÊµÑéÖ®ºó¿ÉÒÔͨ¹ý¡£
1javaÖе÷ÓÃcÓïÑÔ
Ê×ÏȱàдMain.java
public class Main
{
public native static int getStrNum(byte str[], int s ......