ClassNotFoundException, хотя JAR TVF показывает класс «отсутствующий»JAVA

Программисты JAVA общаются здесь
Anonymous
ClassNotFoundException, хотя JAR TVF показывает класс «отсутствующий»

Сообщение Anonymous »

Имея проблему с недоумением при запуске Spark Application через развернутую банку (построенную плагином Maven Shade) в нелокальных средах. < /p>

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

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.postgresql.ds.PGSimpleDataSource
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:96)
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:314)
at com.zaxxer.hikari.pool.PoolBase.(PoolBase.java:108)
at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:105)
at com.zaxxer.hikari.HikariDataSource.(HikariDataSource.java:72)
at mypackage.SansORMProvider.get(SansORMProvider.java:42)
at mypackage.MySansORMProvider.get(MySansORMProvider.scala:15)
at mypackage.MyApp$.main(MyApp.scala:63)
at mypackage.MyApp.main(MyApp.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:680)
Caused by: java.lang.ClassNotFoundException: org.postgresql.ds.PGSimpleDataSource
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:83)
... 13 more
< /code>
Причина, по которой это вызывает недоумение, заключается в том, что следующее в моем pom.xml: < /p>

org.postgresql
postgresql
compile

< /code>
Плагин Shade не имеет конфигураций, ссылающихся на эту зависимость Postgres или любую шаблон, которая бы ее соответствовала.  < /p>

org.apache.maven.plugins
maven-shade-plugin



shade

package



org.apache.spark:*:*
org.apache.hadoop:*:*
org.slf4j:*




*:*

META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA





com.google.common
${project.groupId}.google.common


io.netty
${project.groupId}.io.netty


okhttp3
${project.groupId}.okhttp3


com.fasterxml.jackson
${project.groupId}.fasterxml.jackson

]

true




< /code>
Защитные зависимости (как запрошен):  < /p>

org.apache.spark
spark-core_2.11
2.4.3
provided


org.apache.spark
spark-mllib_2.11
2.4.3
provided


org.apache.spark
spark-sql_2.11
2.4.3
provided


org.apache.spark
spark-tags_2.11
2.4.3
provided

В выводе из команды Maven построить JAR, я вижу [Info], включая org.postgresql: postgresql: jar: 42.2.1 в заштрихованной Jar. grep postgres Я вижу недостающий класс. Тем не менее, когда я раскрываю jar, она там.
В чем может быть проблема? Как мне это подтвердить? И ожидается ли, что взорванная банка отсутствует в папке Org/PostgreSQL?

Подробнее здесь: https://stackoverflow.com/questions/689 ... sing-class

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