Я пытаюсь развернуть мое приложение на heroku и получаю NoClassDefFoundError при вызове страницы index.html. Журнал ошибок выглядит так:
2018-11-04T19:13:02.080531+00:00 heroku[web.1]: Starting process with
command `java $JAVA_OPTS -cp target/classes:target/dependency/*
com.treslines.server.Server`
2018-11-04T19:13:05.913978+00:00 app[web.1]: Setting
JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will
override them.
2018-11-04T19:13:05.926232+00:00 app[web.1]: Picked up
JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2
-Dfile.encoding=UTF-8
2018-11-04T19:13:06.250733+00:00 app[web.1]: Error: A JNI error has
occurred, please check your installation and try again
2018-11-04T19:13:06.250788+00:00 app[web.1]: Exception in thread
"main" java.lang.NoClassDefFoundError: com/j256/ormlite/support
/ConnectionSource
2018-11-04T19:13:06.250796+00:00 app[web.1]: at
java.lang.Class.getDeclaredMethods0(Native Method)
2018-11-04T19:13:06.250799+00:00 app[web.1]: at
java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
2018-11-04T19:13:06.250801+00:00 app[web.1]: at
java.lang.Class.privateGetMethodRecursive(Class.java:3048)
2018-11-04T19:13:06.250808+00:00 app[web.1]: at
java.lang.Class.getMethod0(Class.java:3018)
2018-11-04T19:13:06.250810+00:00 app[web.1]: at
java.lang.Class.getMethod(Class.java:1784)
2018-11-04T19:13:06.250812+00:00 app[web.1]: at ... 7 more
Итак, я понимаю ошибку, и я посмотрел в папке target / dependency локально, и есть все зависимости отсутствующего класса внутри ormlite-core-5.1 и ormlite-jdbc-5.1 библиотеки.
введите описание изображения здесь
Пока все хорошо. Мой файл про Героку выглядит так:
web: java $JAVA_OPTS -cp target/classes:target/dependency/* com.treslines.server.Server
В моем maven pom.xml у меня есть эти конфигурации:
...
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-core</artifactId>
<version>5.1</version>
</dependency>
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>5.1</version>
</dependency>
...
<configuration>
<descriptorRefs>
<!-- This tells Maven to include all dependencies -->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.treslines.server.Server</mainClass>
</manifest>
</archive>
</configuration>
...
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>0.4.4</version>
<configuration>
<jdkVersion>1.8</jdkVersion>
<!-- Use your own application name >>> heroku enforces lowcase names -->
<appName>stocknews</appName>
<processTypes>
<!-- Tell Heroku how to launch your application -->
<web>java $JAVA_OPTS -cp target/classes:target/dependency/* com.treslines.server.Server</web>
</processTypes>
</configuration>
</plugin>
Код работает локально на localhost, как шарм. Я успешно протолкнул код к героку, все работает нормально, Maven успешно работает и так далее. Но когда я вызываю heroku open по команде cli или набираю URL в браузере, происходит NoClassDefFoundError .
У кого-нибудь есть идеи, как ее решить? Есть ли способ получить доступ к развернутому коду на heroku, чтобы увидеть, что было развернуто эффективно?