标签: runtime-compilation

编译并运行动态代码,而不生成EXE?

我想知道是否可以编译,并运行存储的代码,而不生成exe或任何类型的其他文件,基本上从内存中运行该文件.

基本上,Main应用程序将有一些存储代码(可能会更改的代码),并且需要编译代码并执行它.没有创建任何文件.

创建文件,运行程序,然后删除文件不是一个选项.编译后的代码需要从内存中运行.

代码示例,或指针,或几乎任何东西都欢迎:)

c# runtime-compilation

22
推荐指数
2
解决办法
2万
查看次数

适用于Java 5和Java 6的即时内存Java代码编译

如何从Java 5和Java 6中的任意字符串(在内存中)编译java代码,加载它并在其上运行特定方法(预定义)?

在你点燃之前,我查看了现有的实现:

  • 大多数人依赖Java 6 Compiler API.
  • 那些没有,依靠技巧.
  • 是的,我检查了commons-jci.要么我太密集了,不能理解它是如何工作的,要么就是不能.
  • 我找不到如何向编译器提供我当前的类路径(这是非常巨大的).
  • 在有效的实现上(在Java 6中),我找不到如何正确加载内部类(或内部匿名类).
  • 如果整个事物都在内存中,我会非常喜欢它,因为它在多个环境中运行.

我确信之前已经解决了这个问题,但我找不到任何看起来甚至是谷歌半生产质量的东西(除了jci,正如我之前所说,我还没有设法使用).

编辑:

  • 我查看了JavaAssist - 我需要内部类,Java 5.0语言级支持以及使用整个类路径进行编译.另外,我想动态创建新类.我可能弄错了,但我找不到如何用JavaAssit做到这一点.
  • 我愿意使用基于文件系统的解决方案(调用javac),但我不知道如何划分类路径,也不知道如何使用特殊的类加载器加载文件(不在我的类路径中)回收多次调用.虽然我知道如何研究它,但我更喜欢现成的解决方案.

Edit2:现在,我对BeanShell"评估"感到满意.显然它完成了我需要的所有东西(获取一个字符串,在'当前'类路径的上下文中评估它.它确实错过了一些Java 5特性,但它可以使用枚举(不定义)和编译'泛型'(擦除) )类,所以它应该足够我想要的.

我不想将答案标记为已接受,因为我希望有更好的解决方案出现.

Edit3:接受了beanshell建议 - 它真的很棒.

java compiler-construction runtime compilation runtime-compilation

17
推荐指数
3
解决办法
1万
查看次数

在Java应用程序运行时定义类

在Java中,是否可以在应用程序运行时动态创建类定义,然后创建该类的对象?

例如,正在运行的应用程序将读入一个文本文件,该文件包含要包含在新类中的类成员列表.然后,应用程序将根据成员列表定义类定义,然后对其进行实例化.

java runtime-compilation on-the-fly

17
推荐指数
1
解决办法
1万
查看次数

有没有办法在运行时用C或C++编译其他代码?

这是我想要做的:

  1. 运行程序并初始化一些数据结构.
  2. 然后编译可以访问/修改现有数据结构的其他代码.
  3. 根据需要重复步骤2.

我希望能够既要做到这一点C,并C++使用gcc(并最终Java在类Unix系统(特别是Linux和Mac OS X)).我们的想法是基本上为这些语言实现一个read-eval-print循环,它们在输入时编译表达式和语句,并使用它们来修改现有的数据结构(在脚本语言中一直都是这样).我正在编写这个工具python,它生成C/ C++文件,但这不应该是相关的.

我已经探讨了使用共享库执行此操作,但了解到修改共享库不会影响已在运行的程序.我也尝试过使用共享内存但无法找到将函数加载到堆上的方法.我还考虑过使用汇编代码但尚未尝试这样做.

我宁愿不使用任何编译器,gcc除非绝对没有办法gcc.

如果有人有任何想法或知道如何做到这一点,任何帮助将不胜感激.

c c++ linux gcc runtime-compilation

15
推荐指数
3
解决办法
1万
查看次数

CSharpCodeProvider.CompileAssemblyFromFile中的最大错误数

CSharpCodeProvider用来编译我的应用程序的即时插件.

现在可以尝试编译一个看起来不错的文件,但会生成许多错误,例如粘贴二进制文件的C#代码.有许多字符,用处理error CS1056: Unexpected character.

这种行为是预期的,但是这种"恶意"文件的编译过程非常耗时.

我认为合理的一个解决方案是限制错误的数量,之后CSharpCodeProvider.CompileAssemblyFromFile返回.

是否可以设置这样的限制?

如果可以避免的话,我真的不想在第一时间仔细检查文件.

c# runtime-compilation

12
推荐指数
1
解决办法
573
查看次数

你会在哪里使用C#运行时编译?

我最近在另一个关于C#运行时编译的网站上进行了简短的讨论,同时搜索了其他内容,并认为这个想法很有趣.你有没有用过这个?我试图确定如何/何时可以使用它以及它解决了什么问题.我会非常有兴趣听听你是如何使用它的,或者是在有意义的环境中.

非常感谢.

c# optimization runtime-compilation

11
推荐指数
2
解决办法
4317
查看次数

scala作为脚本语言

可能重复:
Scala中的"eval"

我知道scala是一种编译语言,但我也知道我可以动态地将类加载到jvm中,我可以在运行时调用scala编译器,最后但并非最不重要的是我也有一个很棒的repl,所以让scala作为一个脚本语言应该是可能的.

所以我需要运行一些任务:

简单解释:

val src = """ println("Hello World") """
interpret(src)
Run Code Online (Sandbox Code Playgroud)

调用外部函数:

object A{
    def foo = 
        println("Hello World")
}

val src = """ A.foo """
interpret(src)
Run Code Online (Sandbox Code Playgroud)

实现功能:

trait T{
    def foo:String
}

val src = """ class A extends T{ def foo = "Hello World" } """
interpret(src)
val t = loadClassAndCreatInstance.asInstanceOf[T]
println(t.foo)
Run Code Online (Sandbox Code Playgroud)

能够解决我所有的问题会很棒.

scripting interpreter scala runtime-compilation classloader

10
推荐指数
1
解决办法
5740
查看次数

在Java中运行时编译Groovy类

我成功地能够在运行时在Java中编译Groovy并将其存储在数据库中并将其拉出来.如果它有内部类或内部枚举,我无法编译Groovy类.有没有人成功编译这样的Groovy代码并包含内部类/枚举并能够通过类名拉出脚本?

例如,我想加载下面显示的包含内部类的"Test"脚本,并在运行时运行脚本.

编译代码:

public byte[] compileGroovyScript(final String className, final String script) {
    byte[] compiledScriptBytes = null;
    CompilationUnit compileUnit = new CompilationUnit();
    compileUnit.addSource(className, script);
    compileUnit.compile(Phases.CLASS_GENERATION);

    for (Object compileClass : compileUnit.getClasses()) {
        GroovyClass groovyClass = (GroovyClass) compileClass;
        compiledScriptBytes = groovyClass.getBytes();
    }

    return compiledScriptBytes;
}
Run Code Online (Sandbox Code Playgroud)

拉出脚本的代码:

public Class getGroovyScript(final String className, final byte[] script) {
    Class clazz = null;

    try (GroovyClassLoader classLoader = new GroovyClassLoader(this.getClass().getClassLoader())) {
        clazz = classLoader.defineClass(className, script);
    } catch (IOException e) {
    } catch (Exception e) {
    }

    return clazz; …
Run Code Online (Sandbox Code Playgroud)

java groovy runtime-compilation

9
推荐指数
2
解决办法
8108
查看次数

Roslyn,如何在运行时在脚本中实例化一个类并调用该类的方法?

我理解如何在C#中使用Roslyn执行整个脚本,但我现在想要完成的是在脚本中编译一个类,实例化它,将其解析为接口,然后调用已编译和实例化的类实现的方法.

Roslyn是否公开了这样的功能?你能指点我这样的方法吗?

谢谢

c# runtime-compilation roslyn

8
推荐指数
1
解决办法
1727
查看次数

在线c#解释安全问题

我正在考虑建立一个在线C#解释器的想法,有点像Codepad.现在有明显的安全问题:

  • 无限循环
  • System.Diagnostics.Process.Start
  • 几乎整个System.IO命名空间

我对C#的了解并不是很微不足道,但我确信有很多关于它的知识,以及我没有想到的东西.你会注意什么?

一些精确,我计划在使用Mono的小型Linux VPS上运行它.

c# security runtime-compilation interpretation

7
推荐指数
1
解决办法
870
查看次数