Size: a a a

2021 January 04

OS

Oleg Shelajev in graalvm_ru
посмотреть что и как
источник

d

dl in graalvm_ru
Oleg Shelajev
а allow-incomplete-classpath это runtime опция правда же?
насколько я понимаю, это как раз опция для сборки. если класс отсутствует, то с ней мы ставим заглушку, чтобы, если в рантайме полезем к этому классу, получить ошибку.
источник

d

dl in graalvm_ru
Oleg Shelajev
повесь на него может --trace-class-initialization=org.json.JSONObject
о, хорошая тема, попробую и отпишусь.
источник

d

dl in graalvm_ru
пока продвинулся максимально далеко, уже 40 минут компилит, так что надеюсь на успех.
источник

OS

Oleg Shelajev in graalvm_ru
allow-incomplete-classpath — ставит заглушку если мы класс референсим только
источник

OS

Oleg Shelajev in graalvm_ru
если из него надо что-то запустить например потому что он хочет инициализироваться в билд тайм — то логично что грохается
источник

OS

Oleg Shelajev in graalvm_ru
это просто java процесс
источник

OS

Oleg Shelajev in graalvm_ru
ой а прямо большое приложение?
источник

OS

Oleg Shelajev in graalvm_ru
дай больше памяти, CPU отключи своп если например в докере
источник

d

dl in graalvm_ru
Oleg Shelajev
ой а прямо большое приложение?
Приложение само маленькое, прототип, библиотеки жирные, плюс на виртуалке, памяти 8 гигов, не могу добавить без остановки. В целом норм, Excelsior где-то за час справлялся на этой машине.
источник

d

dl in graalvm_ru
Oleg Shelajev
если из него надо что-то запустить например потому что он хочет инициализироваться в билд тайм — то логично что грохается
согласен. а разве он должен хотеть инициализироваться в билд тайм, если при обычном запуске не требовался?
источник

OS

Oleg Shelajev in graalvm_ru
Не вот трэйс поможет надеюсь
источник

OS

Oleg Shelajev in graalvm_ru
Может он в рефлекшн конфиге? И тогда allow не работает
источник

OS

Oleg Shelajev in graalvm_ru
Я не уверен
источник

d

dl in graalvm_ru
компиляция свалилась с gs overhead limit exceeded через 3 часа по времени, сожрав 5 часов cpu, увеличил до 16 гигов память на машине. посмотрим.
источник

d

dl in graalvm_ru
Oleg Shelajev
Не вот трэйс поможет надеюсь
трейс не помог, вывод полностью идентичен, дополнительной инфы нигде  нет
источник

d

dl in graalvm_ru
Из интересного: при запуске с -H:+AllowIncompleteClasspath --allow-incomplete-classpath --trace-class-initialization=org.json.JSONObject количество ошибок меняется: 3, 4, 10, 8, 4, 3

Все ошибки одинаковые:
Fatal error:java.lang.TypeNotPresentException: Type org.json.JSONObject not present
 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)
 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
 at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)
 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)
 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
 at java.base/sun.reflect.generics.repository.MethodRepository.computeReturnType(MethodRepository.java:75)
 at java.base/sun.reflect.generics.repository.MethodRepository.getReturnType(MethodRepository.java:66)
 at java.base/java.lang.reflect.Method.getGenericReturnType(Method.java:292)
 at com.oracle.svm.reflect.hosted.ReflectionMetadataFeature.replacer(ReflectionMetadataFeature.java:65)
 at com.oracle.graal.pointsto.meta.AnalysisUniverse.replaceObject(AnalysisUniverse.java:565)
 at com.oracle.graal.pointsto.ObjectScanner.scanArray(ObjectScanner.java:236)
 at com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:351)
 at com.oracle.graal.pointsto.ObjectScanner.access$400(ObjectScanner.java:60)
 at com.oracle.graal.pointsto.ObjectScanner$2$1.run(ObjectScanner.java:388)
 at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:173)
 at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
 at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
 at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
 at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
 at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
 at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject
 at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
 at java.base/java.lang.Class.forName0(Native Method)
 at java.base/java.lang.Class.forName(Class.java:398)
 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
 ... 21 more
источник

d

dl in graalvm_ru
Ан нет, при запуске без этих опций, только с --no-fallback -H:+ReportExceptionStackTraces тоже разнится количество ошибок. Может быть, компиляция идет в несколько потоков, поэтому успевает разное количество ошибок выдать?
источник

d

dl in graalvm_ru
Посмотрел классы API, там JSONObject используется в 2 интерфейсах и 2 реализациях этих интерфейсов. Методы не статические, так что странно, что  -H:+AllowIncompleteClasspath не ловит эту ошибку. Пока просто убрал эти классы из reflect-config.json.
источник

d

dl in graalvm_ru
Пока собирается, посмотрел параметры запуска JVM при сборке, увидел там -H:+AllowIncompleteClasspath. Правильно ли я понял, что --allow-incomplete-classpath в любом случае превращается в -H:+AllowIncompleteClasspath? Кстати, --allow-incomplete-classpath нет в выводе --help, но есть в обычной документации.
источник