java grpc问题 – java.lang.NoClassDefFoundError:io/grpc/BindableService

huangapple go评论124阅读模式
英文:

java grpc issue - java.lang.NoClassDefFoundError: io/grpc/BindableService

问题

这些是OpenShift部署过程中的日志:

开始使用 /opt/jboss/container/java/run/run-java.sh 启动 Java 应用程序...
INFO exec java -javaagent:/opt/jboss/container/jolokia/jolokia.jar=config=/opt/jboss/container/jolokia/etc/jolokia.properties -XX:+UseParallelOldGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MaxMetaspaceSize=100m -XX:+ExitOnOutOfMemoryError -cp "." -jar /deployments/demo-0.0.1-SNAPSHOT.jar
OpenJDK 64 位 Server VM 警告:如果预计处理器数量将从一个增加到多个,则应使用 -XX:ParallelGCThreads=N 适当地配置并行 GC 线程数。
a
Exception in thread "main" java.lang.NoClassDefFoundError: io/grpc/BindableService
at com.example.demo.DemoApplication.main(DemoApplication.java:18)
Caused by: java.lang.ClassNotFoundException: io.grpc.BindableService
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 1 more

看起来我已经导入了所有所需的依赖项。我还发现一个人如何通过 Gradle 解决了这个问题:
https://stackoverflow.com/questions/42540531/bindableservice-issue-with-grpc-java
但不幸的是,我需要使用 Maven。

提前感谢您提供的所有信息。

英文:

That are logs from openshift deploying:

  1. Starting the Java application using /opt/jboss/container/java/run/run-java.sh ...
  2. INFO exec java -javaagent:/opt/jboss/container/jolokia/jolokia.jar=config=/opt/jboss/container/jolokia/etc/jolokia.properties -XX:+UseParallelOldGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MaxMetaspaceSize=100m -XX:+ExitOnOutOfMemoryError -cp "." -jar /deployments/demo-0.0.1-SNAPSHOT.jar
  3. OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
  4. a
  5. Exception in thread "main" java.lang.NoClassDefFoundError: io/grpc/BindableService
  6. at com.example.demo.DemoApplication.main(DemoApplication.java:18)
  7. Caused by: java.lang.ClassNotFoundException: io.grpc.BindableService
  8. at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  9. at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
  10. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
  11. at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
  12. ... 1 more

It looks i have imported all needed dependencies. I also found out how one man fixed this issue with gradle:
https://stackoverflow.com/questions/42540531/bindableservice-issue-with-grpc-java
But unfortunatelly i need to have maven.

Thanks for all infos in advance

答案1

得分: 2

你的 grpc jars 可能没有捆绑在一起。您可以使用以下方法创建一个包含所有依赖的 fat jar:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.apache.maven.plugins</groupId>
  5. <artifactId>maven-assembly-plugin</artifactId>
  6. <version>3.1.1</version>
  7. <configuration>
  8. <descriptorRefs>
  9. <descriptorRef>jar-with-dependencies</descriptorRef>
  10. </descriptorRefs>
  11. <archive>
  12. <manifest>
  13. <mainClass>完整的主类名</mainClass>
  14. </manifest>
  15. </archive>
  16. </configuration>
  17. <executions>
  18. <execution>
  19. <phase>package</phase>
  20. <goals>
  21. <goal>single</goal>
  22. </goals>
  23. </execution>
  24. </executions>
  25. </plugin>
  26. </plugins>
  27. </build>
英文:

Your grpc jars might not be bundled. You can create a fat jar using the following:

  1. &lt;build&gt;
  2. &lt;plugins&gt;
  3. &lt;plugin&gt;
  4. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  5. &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
  6. &lt;version&gt;3.1.1&lt;/version&gt;
  7. &lt;configuration&gt;
  8. &lt;descriptorRefs&gt;
  9. &lt;descriptorRef&gt;jar-with-dependencies&lt;/descriptorRef&gt;
  10. &lt;/descriptorRefs&gt;
  11. &lt;archive&gt;
  12. &lt;manifest&gt;
  13. &lt;mainClass&gt;fully qualified main class name&lt;/mainClass&gt;
  14. &lt;/manifest&gt;
  15. &lt;/archive&gt;
  16. &lt;/configuration&gt;
  17. &lt;executions&gt;
  18. &lt;execution&gt;
  19. &lt;phase&gt;package&lt;/phase&gt;
  20. &lt;goals&gt;
  21. &lt;goal&gt;single&lt;/goal&gt;
  22. &lt;/goals&gt;
  23. &lt;/execution&gt;
  24. &lt;/executions&gt;
  25. &lt;/plugin&gt;
  26. &lt;/plugins&gt;
  27. &lt;/build&gt;

答案2

得分: 2

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-shade-plugin</artifactId>
  4. <version>3.2.4</version>
  5. <executions>
  6. <execution>
  7. <phase>package</phase>
  8. <goals>
  9. <goal>shade</goal>
  10. </goals>
  11. <configuration>
  12. <transformers>
  13. <transformer
  14. implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  15. <mainClass>你的项目的主类路径</mainClass>
  16. </transformer>
  17. </transformers>
  18. </configuration>
  19. </execution>
  20. </executions>
  21. </plugin>

com.mafei.server.GRPCServer替换为你项目的主类路径。

英文:

change the plugins sections of your pom.xml file like below.

  1. &lt;plugin&gt;
  2. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  3. &lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt;
  4. &lt;version&gt;3.2.4&lt;/version&gt;
  5. &lt;executions&gt;
  6. &lt;execution&gt;
  7. &lt;phase&gt;package&lt;/phase&gt;
  8. &lt;goals&gt;
  9. &lt;goal&gt;shade&lt;/goal&gt;
  10. &lt;/goals&gt;
  11. &lt;configuration&gt;
  12. &lt;transformers&gt;
  13. &lt;transformer
  14. implementation=&quot;org.apache.maven.plugins.shade.resource.ManifestResourceTransformer&quot;&gt;
  15. &lt;mainClass&gt;com.mafei.server.GRPCServer&lt;/mainClass&gt;
  16. &lt;/transformer&gt;
  17. &lt;/transformers&gt;
  18. &lt;/configuration&gt;
  19. &lt;/execution&gt;
  20. &lt;/executions&gt;
  21. &lt;/plugin&gt;

replace com.mafei.server.GRPCServer with your main class of the project.

huangapple
  • 本文由 发表于 2020年3月15日 08:05:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/60688528.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定