Size: a a a

2021 April 05

AG

Alexey Genus in pro.jvm
А, эта штука должна быть встроенная в groovy. Сорян, сразу не понял.
Что, если ему указать ClassLoader заранее, вот так?
new GroovyScriptEngine(paths, Thread.currentThread().getContextClassLoader())
источник

AG

Alexey Genus in pro.jvm
Или даже проще, getClass().getClassLoader()
источник

E

Emin in pro.jvm
Alexey Genus
Или даже проще, getClass().getClassLoader()
тоже самое
источник

AG

Alexey Genus in pro.jvm
Странно. А есть весь stacktrace?
источник

E

Emin in pro.jvm
Exception in thread "main" org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: No suitable ClassLoader found for grab

java.lang.RuntimeException: No suitable ClassLoader found for grab
at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179)
at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249)
at groovy.grape.Grape$1.run(Grape.java:174)
at groovy.grape.Grape$1.run(Grape.java:160)
at java.security.AccessController.doPrivileged(Native Method)
at groovy.grape.Grape.grab(Grape.java:160)
at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377)
at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:337)
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389)
at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332)
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:330)
at groovy.util.GroovyScriptEngine$ScriptClassLoader.doParseClass(GroovyScriptEngine.java:232)
at groovy.util.GroovyScriptEngine$ScriptClassLoader.parseClass(GroovyScriptEngine.java:219)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257)
at groovy.util.GroovyScriptEngine.loadScriptByName(GroovyScriptEngine.java:529)
at groovy.util.GroovyScriptEngine.createScript(GroovyScriptEngine.java:579)
at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:566)
источник

AG

Alexey Genus in pro.jvm
Emin
Exception in thread "main" org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during conversion: No suitable ClassLoader found for grab

java.lang.RuntimeException: No suitable ClassLoader found for grab
at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179)
at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249)
at groovy.grape.Grape$1.run(Grape.java:174)
at groovy.grape.Grape$1.run(Grape.java:160)
at java.security.AccessController.doPrivileged(Native Method)
at groovy.grape.Grape.grab(Grape.java:160)
at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377)
at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:337)
at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389)
at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332)
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:330)
at groovy.util.GroovyScriptEngine$ScriptClassLoader.doParseClass(GroovyScriptEngine.java:232)
at groovy.util.GroovyScriptEngine$ScriptClassLoader.parseClass(GroovyScriptEngine.java:219)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257)
at groovy.util.GroovyScriptEngine.loadScriptByName(GroovyScriptEngine.java:529)
at groovy.util.GroovyScriptEngine.createScript(GroovyScriptEngine.java:579)
at groovy.util.GroovyScriptEngine.run(GroovyScriptEngine.java:566)
https://stackoverflow.com/questions/4611230/no-suitable-classloader-found-for-grab вот тут пишут, что это просто не работает для любых ClassLoader’ов, кроме того, который поставляется с groovy. Думаю, в этом дело
источник

E

Emin in pro.jvm
Alexey Genus
https://stackoverflow.com/questions/4611230/no-suitable-classloader-found-for-grab вот тут пишут, что это просто не работает для любых ClassLoader’ов, кроме того, который поставляется с groovy. Думаю, в этом дело
он там вроде как тестить пытается
источник

E

Emin in pro.jvm
@Grab( 'commons-lang:commons-lang:2.6' )
import org.apache.commons.lang.StringUtils
println StringUtils.join( 'a', 'b', 'c' )
источник

E

Emin in pro.jvm
этот скрипт пашит
источник

E

Emin in pro.jvm
вроде получилось
поменял немного

@Grab('mysql:mysql-connector-java:5.0.3')
import groovy.sql.Sql
import com.mysql.jdbc.Driver
подтянул по сути все зависимости из явы , @GrabConfig(systemClassLoader=true)   - удалил
источник

E

Emin in pro.jvm
наверное и граб тоде не нужен, ща проверю
источник

AG

Alexey Genus in pro.jvm
Ну, если mysql уже есть в classpath, то не должен быть
источник

E

Emin in pro.jvm
Alexey Genus
Ну, если mysql уже есть в classpath, то не должен быть
не было до этого
источник

E

Emin in pro.jvm
добавил в мавен
источник

E

Emin in pro.jvm
изначальный вариант не понятно почему не пашит
источник

AG

Alexey Genus in pro.jvm
Да, я понял, что раньше не было. Изначальный вариант пытается подгрузить зависимость, но это не работает. Не думаю, что это связано с тестами, это не должно нигде работать
источник

E

Emin in pro.jvm
@Grab( 'commons-lang:commons-lang:2.6' )
import org.apache.commons.lang.StringUtils
println StringUtils.join( 'a', 'b', 'c' )


этот скрипт работает
источник

AG

Alexey Genus in pro.jvm
99%, что эта либа уже есть в classpath
источник

E

Emin in pro.jvm
это же apache
источник

AG

Alexey Genus in pro.jvm
Ну сколько у вас зависимостей в помке и сколько у них транзитивных? Уверен, что не парочка
источник