Log4j2 Нет ошибки конструктора внедрения при запуске через java.exeJAVA

Программисты JAVA общаются здесь
Anonymous
Log4j2 Нет ошибки конструктора внедрения при запуске через java.exe

Сообщение Anonymous »

У меня есть программа на Java, созданная с помощью maven и упакованная с помощью ассемблера в один jar со всеми зависимостями. Мне нужно запустить это в докере, чтобы иметь возможность запустить его с помощью java.exe. Проблема в том, что log4j2 выдает ошибку. Я нашел сообщение с той же ошибкой, что и я, и есть ответ. К сожалению, я не понимаю, что пытается сказать ответ, и у меня нет репутации, позволяющей добавлять комментарии и просить разъяснений.
Конструктор по умолчанию не найден; вложенным исключением является java.lang.NoSuchMethodException с Log4J?
Это ошибка:

Код: Выделить всё

PS C:\Users\pholub\eclipse testing\image-resizing-tool\rescaler> C:\DEV_HOME\TOOLS\java\1.17.0_5\bin\java.exe -jar .\target\rescaler-1.0.0-jar-with-dependencies.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.apache.logging.log4j.plugins.di.NotInjectableException: No @Inject constructor or default constructor found for chain Key[type: org.apache.logging.log4j.core.lookup.InterpolatorFactory] -> Key[type: java.util.Map; namespace: Lookup]
at org.apache.logging.log4j.plugins.di.DefaultInstanceFactory.createDefaultFactory(DefaultInstanceFactory.java:133)
at org.apache.logging.log4j.plugins.di.DefaultInstanceFactory.lambda$getFactory$3(DefaultInstanceFactory.java:111)
at java.base/java.util.Optional.orElseGet(Optional.java:364)
at org.apache.logging.log4j.plugins.di.DefaultInstanceFactory.getFactory(DefaultInstanceFactory.java:111)
at org.apache.logging.log4j.plugins.di.InstanceFactory.getInstance(InstanceFactory.java:126)
at org.apache.logging.log4j.plugins.di.DefaultInstanceFactory.lambda$getArgumentFactory$9(DefaultInstanceFactory.java:211)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
at org.apache.logging.log4j.plugins.di.DefaultInstanceFactory.lambda$registerBundleMethod$13(DefaultInstanceFactory.java:293)
at org.apache.logging.log4j.plugins.di.InstanceFactory.getInstance(InstanceFactory.java:115)
at org.apache.logging.log4j.core.config.AbstractConfiguration.(AbstractConfiguration.java:185)
at org.apache.logging.log4j.core.config.DefaultConfiguration.(DefaultConfiguration.java:41)
at org.apache.logging.log4j.core.LoggerContext.(LoggerContext.java:89)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:289)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:240)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:148)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:131)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:125)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:156)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:49)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:127)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:554)
at gk.tools.rescaler.App.(App.java:55)
Это мой pom.xml:

Код: Выделить всё



4.0.0

gk.tools.rescaler
rescaler
1.0.0

rescaler


UTF-8
17
17





org.apache.logging.log4j
log4j-core
3.0.0-beta2



org.apache.logging.log4j
log4j-api
3.0.0-beta2



org.apache.commons
commons-lang3
3.14.0



com.beust
jcommander
1.82



com.github.downgoon
marvin
1.5.5
pom



com.github.downgoon
MarvinFramework
1.5.5



com.github.downgoon
MarvinPlugins
1.5.5



net.coobird
thumbnailator
0.4.20



org.imgscalr
imgscalr-lib
4.2



junit
junit
4.11
test








maven-clean-plugin
3.1.0



maven-resources-plugin
3.0.2


maven-compiler-plugin
3.8.1


maven-surefire-plugin
2.22.1


maven-jar-plugin



true
gk.tools.rescaler.App



3.0.2


maven-install-plugin
2.5.2


maven-deploy-plugin
2.8.2



maven-site-plugin
3.7.1


maven-project-info-reports-plugin
3.0.0


maven-assembly-plugin



gk.tools.rescaler.App



jar-with-dependencies




make-assembly 
package 

single








И ошибка находится в строке с этим кодом:

Код: Выделить всё

private static final Logger logger = LogManager.getLogger(App.class)
редактирование: также включая мой log4j2.xml Извините, если это считается дублированием, но я не могу в этом разобраться. Насколько я понимаю, мне нужно что-то добавить в путь к классам, но я не могу найти, что именно нужно добавить. Я обнаружил, что log4j2 игнорирует аргумент командной строки classpath, но я не знаю, что делать с этой информацией. Кажется, я понял, что мне нужно добавить внешние файлы jar в путь к классам, но все должно быть включено.


Подробнее здесь: https://stackoverflow.com/questions/787 ... h-java-exe

Вернуться в «JAVA»