问题标签 [groovyclassloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jenkins - 从 SCM jenkins 管道开始,没有找到合适的 ClassLoader 来抓取 Wenn
为什么如果我运行管道脚本没有问题,如果我从 SCM 运行它我得到
没有找到合适的 ClassLoader 可供抓取
我怎样才能解决这个问题?
java - 在 Java 应用程序中运行和优化 Groovy Scripts 动态执行
我一直在探索在 java 应用程序中动态运行 groovy 脚本的方法。
我经历过的方法如下: 1. Groovy Shell
- 使用 GroovyClassLoader。
我有两个 java 应用程序。其中之一是 GUI 的后端,它在执行数据时存储数据。两者之间没有共同的缓存。为了避免每次编译的开销,我正在考虑先在应用程序B中编译应用程序,然后缓存它(这样也避免了内存泄漏)。另外,我尝试存储最初编译脚本生成的类文件,然后以字节的形式将其存储在数据库中,但到目前为止还没有成功。
但是,我不确定这是否是一种优化,或者 Groovy Shell/Groovy 类加载器是否已经缓存了生成的类文件。最好的方法应该是什么?
此外,预计脚本并不简单,那么在 Groovy Shell 或 Groovy 类加载器中哪种机制会更好?(另外,探索 GrooyScriptEngine,但似乎简单脚本不需要它)。
java - 如何确认我的 ClassLoader 结构中没有重复的类?
我正在使用 GroovyClassLoader 加载多个具有类名和包结构的 groovy 文件(不是脚本)。我相信我遇到了为同一个类加载多个类文件的问题,尽管基于这种类型的错误消息,每个文件只调用一次 parseClass:
org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法将具有类“TickIt.Pizza”的对象“TickIt.Pizza@3eea9be9”转换为类“TickIt.Pizza”
此外,我在某些情况下使用静态设置器来存储变量,并且隐式调用 Class 似乎表明存在 Class 的其他副本,因为在设置变量后我可以引用它并且它似乎是空的。
我做了一个小测试来试图证明这个问题,它似乎表明确实加载了多个类。通过在我的 GroovyClassLoader 上的加载类中找到匹配的类,我可以与隐式类进行比较。对于我的 DockingBay 类,我有一个名为班车的静态地图。已加载的 DockingBay 类具有值,但隐式调用 Dockingbay.shuttle 是空的。见下文:
输出:
这是我将文件加载到 GroovyClassLoader 的代码,我称之为 PartsStore。
我希望无论我从哪里调用我的类 DockingBay(假设它加载在同一个 GroovyClassLoader 上),我都会收到加载在 ClassLoader 中的同一个类。看来我不是。我注意到比较类的类加载器表明它们是不同的(但一致的)内部加载器。为什么?
java - Java:GroovyClassLoader:在 Groovy 类中找不到方法的符号
我正在尝试在 java 中使用 GroovyClassLoader 来执行 Groovy 类中的方法。
我创建了一个 Java 类,公共方法创建 GroovyClassLoader 的实例,parseClass 然后创建类的新实例,调用类中的方法。
错误:Gtest.java:22:错误:找不到符号 obj.doIt(); ^ 符号:方法 doIt() 位置:Object 1 类型的变量 obj 错误
java - 对 parseClass 的 GroovyClassLoader 调用成功,即使代码无法编译
我正在尝试将 Groovy 脚本作为类动态加载,但即使脚本的代码未编译,也会创建类对象。
例如,我的用于加载 Groovy 脚本的 Groovy 代码的简化版本如下:
显然,该代码blah blah blah
不是合法的 Groovy 脚本。然而,为这个动态代码成功地创建了一个类对象。根据GroovyClassLoader 的 Javadoc,对于parseClass
CompilationFailedException
这种情况,应该抛出方法a 。
怎么可能仍然为损坏的代码创建该类,以及如何根据代码是否编译成功地从动态 Groovy 源代码创建一个类?我做了很多研究和实验,但无济于事。
java - 如何将编译好的 Groovy 脚本存储在数据库中,并在需要时获取?
我有一个应用程序多次使用相同的 groovy 脚本。每次,它都会在运行时一次又一次地编译相同的脚本。为了提高性能,我只需要编译一次脚本并将编译后的脚本存储在数据库中,以后可以获取并与绑定变量一起使用。
谢谢,
groovy - 如何使用 GroovyClassLoader 加载 GroovyCompiled 类或在 loadClass 的情况下如何设置委托
我正在尝试加载在构建期间编译并作为 .class 文件放置在类路径中的类。为此,我尝试了
这将成功加载 java 代码中的类文件,但它使用 AppClassLoader 来加载这个而不是 GroovyClassLoader。
我了解 GroovyClassLoader 在内部使用 AppClassLoader 找到它。但有一个区别:
正如gos.parseClass(string)
将给我们一个从 GroovyClassLoader 解析的类。
在第二种情况(parseClass)中实例化类文件时,我们可以委托设置委托,但在第一种情况(loadClass)中,我们没有任何委托。
执行 loadClass 或通过 GroovyClassLoader 加载类文件的任何方式后如何设置委托。
java - 如何在 GroovyClassLoader 中使用 `addClasspath()` 方法
我需要从 DataBase 加载一堆 groovy 脚本,如下所示:
当调用 parseClass 方法时,会引发此异常:
我看到了这个问题:GroovyClassLoader and imports。我知道这个错误是由RuleDataB
未加载引起的。
脚本是这样的:
令我困惑的是如何使用该addClasspath()
方法。我的脚本是从 BD 加载的,我应该转换String
成File
吗?
我还需要reload
通过更新这个 groovy 类ScriptDAO
。