【问题标题】:java grpc issue - java.lang.NoClassDefFoundError: io/grpc/BindableServicejava grpc 问题 - java.lang.NoClassDefFoundError: io/grpc/BindableService
【发布时间】:2020-03-15 00:05:46
【问题描述】:

这是来自 openshift 部署的日志:

    Starting the Java application using /opt/jboss/container/java/run/run-java.sh ...
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-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
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 解决这个问题的: bindableService issue with grpc-java 但不幸的是我需要有 maven。

提前感谢所有信息

【问题讨论】:

    标签: java maven dependencies grpc shadow


    【解决方案1】:

    您的 grpc jar 可能未捆绑。您可以使用以下方法创建一个胖罐:

    <build>
       <plugins>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-assembly-plugin</artifactId>
             <version>3.1.1</version>
             <configuration>
                <descriptorRefs>
                   <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                   <manifest>
                      <mainClass>fully qualified main class name</mainClass>
                   </manifest>
                </archive>
             </configuration>
             <executions>
                <execution>
                   <phase>package</phase>
                   <goals>
                      <goal>single</goal>
                   </goals>
                </execution>
             </executions>
          </plugin>
       </plugins>
    </build>
    
    
    
    
    
    

    【讨论】:

      【解决方案2】:

      更改pom.xml 文件的plugins 部分,如下所示。

                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-shade-plugin</artifactId>
                      <version>3.2.4</version>
                      <executions>
                          <execution>
                              <phase>package</phase>
                              <goals>
                                  <goal>shade</goal>
                              </goals>
                              <configuration>
                                  <transformers>
                                      <transformer
                                              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                          <mainClass>com.mafei.server.GRPCServer</mainClass>
                                      </transformer>
                                  </transformers>
                              </configuration>
                          </execution>
                      </executions>
                  </plugin>
      
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 2023-01-31
        • 2021-11-24
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        相关资源
        最近更新 更多