Grab に失敗する
# Dec 1, 2022
1
2
|
@Grab(group='org.openjfx', module='javafx-base', version='19')
import javafx.application.Application
|
これを実行すると以下のような表示が出る。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Caught: java.lang.NoClassDefFoundError: org/apache/ivy/util/MessageLogger
java.lang.NoClassDefFoundError: org/apache/ivy/util/MessageLogger
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:390)
at java.base/java.lang.Class.forName(Class.java:381)
at groovy.grape.Grape.getInstance(Grape.java:124)
at groovy.grape.Grape$1.run(Grape.java:161)
at groovy.grape.Grape$1.run(Grape.java:158)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at groovy.grape.Grape.grab(Grape.java:158)
at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:380)
at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$5(ASTTransformationVisitor.java:377)
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:896)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:692)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:666)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:373)
at groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader.java:316)
at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:572)
at groovy.lang.GroovyShell.run(GroovyShell.java:392)
at groovy.lang.GroovyShell.run(GroovyShell.java:382)
at groovy.ui.GroovyMain.processOnce(GroovyMain.java:649)
at groovy.ui.GroovyMain.run(GroovyMain.java:389)
at groovy.ui.GroovyMain.access$1400(GroovyMain.java:67)
at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:313)
at groovy.ui.GroovyMain.processArgs(GroovyMain.java:141)
at groovy.ui.GroovyMain.main(GroovyMain.java:114)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:109)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:132)
Caused by: java.lang.ClassNotFoundException: org.apache.ivy.util.MessageLogger
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 31 more
|
全然良くわからないんだが、 Grape
機能が使えないようだ。
org.apache.ivy.util.MessageLogger
クラスが見つからないらしい。
というか、 pantsbuild/ivy
が archived
になっとるーーw
…というのは多分関係ない。
以下のように修正しても、ダメっぽかった。
1
2
3
|
@Grab(group='org.apache.ivy', module='ivy', version='2.5.1')
@Grab(group='org.openjfx', module='javafx-base', version='19')
import javafx.application.Application
|
@Grab
を使う時に ivy
を使うため、 ivy
の MessageLogger
クラスが見つからないので多分ダメなのだろう。
1
2
3
4
|
@Grab(group='org.apche.commons', module='commons-lang3', version='3.1')
import org.apache.commons.lang3.StringUtils
println StringUtils.join( args, ', ' )
|
もちろん、このコードでも同じ。
1
2
3
|
@GrabConfig(systemClassLoader=true)
@Grab(group='org.openjfx', module='javafx-base', version='19')
import javafx.application.Application
|