首页 文章
  • 1 votes
     answers
     views

    使用GroovyClassLoader与GroovyShell有什么优缺点

    我需要从我的Java应用程序运行一些外部代码,这些代码将经常更新并与应用程序的其余部分正交 . 由于我不为每次代码更改重新部署整个应用程序(以及其他原因),我们选择使用groovy作为此代码,并将其存储在文件系统或数据库中 . From the documentation我明白我有两种方法来运行代码 - 使用GroovyShell或GroovyClassLoader(eval不适合这里) 每种方法...
  • 0 votes
     answers
     views

    无法使用GroovyClassLoader动态更改或添加类中的方法

    我尝试动态更改并添加一个groovy脚本中定义的类的方法来自另一个groovy脚本,但如果我直接在.metaClass中使用classname,则无法弄清楚它为什么有效 . 但是如果我使用GroovyClassLoader加载类(我需要这样做)! 我有一个文件'MyTest.groovy' class MyTest { public void setUp() { println...
  • 1 votes
     answers
     views

    GroovyClassLoading机制

    我真的是groovy脚本的新手但是在一些教程之后我尝试使用 GroovyClassLoader 的 parseClass() 方法在我的java代码中动态加载一些groovy类 . 我写了一些片段,它对我来说很好 . 问题是我不清楚我的视图之外的groovy引擎是什么以及这些脚本是如何编译的?是否有新的类被压缩并加载到jvm中?或者我的应用程序是否使用了一些缓存来源? 这是我要解析的类: priv...
  • 4 votes
     answers
     views

    GroovyClassLoader和导入

    我在我的Java类中使用GroovyClassLoader来解析某个(理想情况下很复杂的)groovy文件(将在下一步执行): Call in MyClass.java final Class parsedClass = groovyClassLoader.parseClass(groovyFile); 知道: Groovy文件需要存储在文件系统中,因为需要在不重新部署的情况下进行更改 . ...
  • 5 votes
     answers
     views

    如何在隔离的类加载器中执行groovy脚本?

    我正在尝试在隔离的类加载器中运行groovy脚本,以便它们不会在调用类的依赖项的上下文中执行 . Path log4j = Paths.get("..../lib/log4j-1.2.17.jar"); Path groovy = Paths.get("..../lib/groovy-all-2.1.3.jar"); RootLoader r...
  • 0 votes
     answers
     views

    Groovy - 是否可以加载二进制类?

    我有一个使用多个groovy脚本的Java应用程序,编译后使用 GroovyShell.parse(text) 方法将脚本缓存在内存中 . 是否有可能只编译一次这些脚本并在磁盘/数据库上保留二进制类?以下代码将在 /tmp 中存储二进制类; CompilerConfiguration compilerConfiguration=new CompilerConfiguration(); co...
  • 0 votes
     answers
     views

    GroovyClassloader行为

    GroovyClassloader行为理解, ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("groovy"); GroovyScriptEngineImpl groovyEngineImpl = (GroovyScri...
  • 1 votes
     answers
     views

    如何在动态加载的groovy文件中使用import

    我试图为我的用户提供一种方法,通过动态加载他们的源文件来为主要的groovy应用程序提供插件 . 但他们的groovy文件包含import语句,我不知道如何使它们工作,即使有一个明显好的类路径 . 主应用程序是shell脚本bin / top.sh: #!/bin/bash groovy-2.4.1/bin/groovy -cp lib lib/Top.groovy lib / Top.groo...
  • 18 votes
     answers
     views

    从gradle中运行groovy脚本

    创建一个运行groovy脚本的gradle任务的最佳方法是什么?我意识到gradle构建文件是常规的,所以我认为可以做这样的事情: task run << { Script app = new GroovyShell().parse(new File("examples/foo.groovy")) // or replace .parse() w/ ...

热门问题