jprotobuf
jprotobuf copied to clipboard
编译失败,动态生成的类在被动态编译时,无法找到import的类,无法生成proto文件 。
JDK版本:8 jprotobuf版本: 2.4.3
JDK版本、maven版本、jprotobuf版本、编译插件版本都换了,还是不行
[INFO] [INFO] --- jprotobuf-precompile-plugin:2.2.2:precompile (default) @ jprotobuf-project --- [INFO] * filterClassPackages='[com.game]' [INFO] * generateProtofile='true' [INFO] * compileDependencies='true' [WARNING] java.lang.reflect.InvocationTargetException 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 com.baidu.jprotobuf.mojo.PreCompileMojo$1.run (PreCompileMojo.java:322) at java.lang.Thread.run (Thread.java:745) Caused by: jodd.io.findfile.FindFileException: Scan entry error: EntryData{com.game.MessaageRequest'}; <--- java.lang.IllegalStateException: Compilation failed. class: com.game.MessaageRequest$$JProtoBufClass, diagnostics: [MessaageRequest$$JProtoBufClass.java:5: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:9: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.FieldType; ^, MessaageRequest$$JProtoBufClass.java:11: 错误: 程序包com.baidu.bjf.remoting.protobuf.utils不存在 import com.baidu.bjf.remoting.protobuf.utils.; ^, MessaageRequest$$JProtoBufClass.java:13: 错误: 程序包com.google.protobuf不存在 import com.google.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:21: 错误: 程序包com.baidu.bjf.remoting.protobuf.code不存在 import com.baidu.bjf.remoting.protobuf.code.; ^, MessaageRequest$$JProtoBufClass.java:24: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 public class MessaageRequest$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.game.MessaageRequest>{ ^, MessaageRequest$$JProtoBufClass.java:25: 错误: 程序包com.google.protobuf.Descriptors不存在 private com.google.protobuf.Descriptors.Descriptor descriptor; ^, MessaageRequest$$JProtoBufClass.java:62: 错误: 找不到符号 public void doWriteTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:85: 错误: 找不到符号 public void writeTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:90: 错误: 找不到符号 public com.game.MessaageRequest readFrom(CodedInputStream input) throws IOException { ^ 符号: 类 CodedInputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:146: 错误: 程序包com.google.protobuf.Descriptors不存在 public com.google.protobuf.Descriptors.Descriptor getDescriptor() throws IOException { ^] at jodd.io.findfile.ClassFinder.scanEntry (ClassFinder.java:377) at jodd.io.findfile.ClassFinder.scanClassFile (ClassFinder.java:324) at jodd.io.findfile.ClassFinder.scanClassPath (ClassFinder.java:307) at jodd.io.findfile.ClassFinder.scanPath (ClassFinder.java:239) at jodd.io.findfile.ClassFinder.scanPaths (ClassFinder.java:178) at jodd.io.findfile.ClassScanner.scan (ClassScanner.java:35) at jodd.io.findfile.ClassScanner.scanDefaultClasspath (ClassScanner.java:28) at com.baidu.jprotobuf.mojo.JprotobufPreCompileMain.main (JprotobufPreCompileMain.java:150) 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 com.baidu.jprotobuf.mojo.PreCompileMojo$1.run (PreCompileMojo.java:322) at java.lang.Thread.run (Thread.java:745) Caused by: java.lang.Exception: Compilation failed. class: com.game.MessaageRequest$$JProtoBufClass, diagnostics: [MessaageRequest$$JProtoBufClass.java:5: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:9: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.FieldType; ^, MessaageRequest$$JProtoBufClass.java:11: 错误: 程序包com.baidu.bjf.remoting.protobuf.utils不存在 import com.baidu.bjf.remoting.protobuf.utils.; ^, MessaageRequest$$JProtoBufClass.java:13: 错误: 程序包com.google.protobuf不存在 import com.google.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:21: 错误: 程序包com.baidu.bjf.remoting.protobuf.code不存在 import com.baidu.bjf.remoting.protobuf.code.; ^, MessaageRequest$$JProtoBufClass.java:24: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 public class MessaageRequest$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.game.MessaageRequest>{ ^, MessaageRequest$$JProtoBufClass.java:25: 错误: 程序包com.google.protobuf.Descriptors不存在 private com.google.protobuf.Descriptors.Descriptor descriptor; ^, MessaageRequest$$JProtoBufClass.java:62: 错误: 找不到符号 public void doWriteTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:85: 错误: 找不到符号 public void writeTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:90: 错误: 找不到符号 public com.game.MessaageRequest readFrom(CodedInputStream input) throws IOException { ^ 符号: 类 CodedInputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:146: 错误: 程序包com.google.protobuf.Descriptors不存在 public com.google.protobuf.Descriptors.Descriptor getDescriptor() throws IOException { ^] at com.baidu.jprotobuf.mojo.JprotobufPreCompileMain$1.onEntry (JprotobufPreCompileMain.java:121) at jodd.io.findfile.ClassFinder.scanEntry (ClassFinder.java:375) at jodd.io.findfile.ClassFinder.scanClassFile (ClassFinder.java:324) at jodd.io.findfile.ClassFinder.scanClassPath (ClassFinder.java:307) at jodd.io.findfile.ClassFinder.scanPath (ClassFinder.java:239) at jodd.io.findfile.ClassFinder.scanPaths (ClassFinder.java:178) at jodd.io.findfile.ClassScanner.scan (ClassScanner.java:35) at jodd.io.findfile.ClassScanner.scanDefaultClasspath (ClassScanner.java:28) at com.baidu.jprotobuf.mojo.JprotobufPreCompileMain.main (JprotobufPreCompileMain.java:150) 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 com.baidu.jprotobuf.mojo.PreCompileMojo$1.run (PreCompileMojo.java:322) at java.lang.Thread.run (Thread.java:745) Caused by: java.lang.IllegalStateException: Compilation failed. class: com.game.MessaageRequest$$JProtoBufClass, diagnostics: [MessaageRequest$$JProtoBufClass.java:5: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:9: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 import com.baidu.bjf.remoting.protobuf.FieldType; ^, MessaageRequest$$JProtoBufClass.java:11: 错误: 程序包com.baidu.bjf.remoting.protobuf.utils不存在 import com.baidu.bjf.remoting.protobuf.utils.; ^, MessaageRequest$$JProtoBufClass.java:13: 错误: 程序包com.google.protobuf不存在 import com.google.protobuf.; ^, MessaageRequest$$JProtoBufClass.java:21: 错误: 程序包com.baidu.bjf.remoting.protobuf.code不存在 import com.baidu.bjf.remoting.protobuf.code.; ^, MessaageRequest$$JProtoBufClass.java:24: 错误: 程序包com.baidu.bjf.remoting.protobuf不存在 public class MessaageRequest$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.game.MessaageRequest>{ ^, MessaageRequest$$JProtoBufClass.java:25: 错误: 程序包com.google.protobuf.Descriptors不存在 private com.google.protobuf.Descriptors.Descriptor descriptor; ^, MessaageRequest$$JProtoBufClass.java:62: 错误: 找不到符号 public void doWriteTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:85: 错误: 找不到符号 public void writeTo(com.game.MessaageRequest t, CodedOutputStream output) ^ 符号: 类 CodedOutputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:90: 错误: 找不到符号 public com.game.MessaageRequest readFrom(CodedInputStream input) throws IOException { ^ 符号: 类 CodedInputStream 位置: 类 com.game.MessaageRequest$$JProtoBufClass, MessaageRequest$$JProtoBufClass.java:146: 错误: 程序包com.google.protobuf.Descriptors不存在 public com.google.protobuf.Descriptors.Descriptor getDescriptor() throws IOException { ^] at com.baidu.bjf.remoting.protobuf.utils.compiler.JdkCompiler.doCompile (JdkCompiler.java:202) at com.baidu.bjf.remoting.protobuf.utils.compiler.AbstractCompiler.compile (AbstractCompiler.java:43) at com.baidu.bjf.remoting.protobuf.ProtobufProxy.doCreate (ProtobufProxy.java:408) at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create (ProtobufProxy.java:311) at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create (ProtobufProxy.java:276) at com.baidu.jprotobuf.mojo.JprotobufPreCompileMain$1.onEntry (JprotobufPreCompileMain.java:111) at jodd.io.findfile.ClassFinder.scanEntry (ClassFinder.java:375) at jodd.io.findfile.ClassFinder.scanClassFile (ClassFinder.java:324) at jodd.io.findfile.ClassFinder.scanClassPath (ClassFinder.java:307) at jodd.io.findfile.ClassFinder.scanPath (ClassFinder.java:239) at jodd.io.findfile.ClassFinder.scanPaths (ClassFinder.java:178) at jodd.io.findfile.ClassScanner.scan (ClassScanner.java:35) at jodd.io.findfile.ClassScanner.scanDefaultClasspath (ClassScanner.java:28) at com.baidu.jprotobuf.mojo.JprotobufPreCompileMain.main (JprotobufPreCompileMain.java:150) 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 com.baidu.jprotobuf.mojo.PreCompileMojo$1.run (PreCompileMojo.java:322) at java.lang.Thread.run (Thread.java:745) [INFO] JProtobuf pre compile done time took: 185ms
我也有相同的问题
how is it now?
同样的问题,请问作者是否有解决?
是第一次遇到吗? 执行时 加 mvn clean 试一下呢? 如果 还不行,试一下 升级版本 jprotobuf 2.4.9 plugin 2.2.6
是第一次遇到吗? 执行时 加 mvn clean 试一下呢? 如果 还不行,试一下 升级版本 jprotobuf 2.4.9 plugin 2.2.6
是第一次遇到吗? 执行时 加 mvn clean 试一下呢? 如果 还不行,试一下 升级版本 jprotobuf 2.4.9 plugin 2.2.6
我用的该版本一直报如下:
[ERROR] Failed to execute goal com.baidu:jprotobuf-precompile-plugin:2.2.6:precompile (default) on project e-plan: An exception occured while executing the Java class. null: InvocationTargetException: Scan entry error: EntryData{com.baidu.gmclient.ConfigConfig'}; <--- java.lang.IllegalStateException: Compilation failed. class: com.baidu.gmclient.ConfigConfig$$JProtoBufClass, diagnostics: [警告: 未知的枚举常量 com.baidu.bjf.remoting.protobuf.FieldType.UINT32
[ERROR] 原因: 找不到com.baidu.bjf.remoting.protobuf.FieldType的类文件, 警告: 未知的枚举常量 com.baidu.bjf.remoting.protobuf.FieldType.UINT32, 警告: 未知的枚举常量 com.baidu.bjf.remoting.protobuf.FieldType.BYTES, ConfigConfig$$JProtoBufClass.java:24: 警告: Can't initialize javac processor due to (most likely) a class loader problem: java.lang.NoClassDefFoundError: com/sun/tools/javac/processing/JavacProcessingEnvironment
[ERROR] public class ConfigConfig$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.baidu.gmclient.ConfigConfig>{
[ERROR] ^
[ERROR] at lombok.javac.apt.LombokProcessor.getJavacProcessingEnvironment(LombokProcessor.java:419)
[ERROR] at lombok.javac.apt.LombokProcessor.init(LombokProcessor.java:90)
[ERROR] at lombok.core.AnnotationProcessor$JavacDescriptor.want(AnnotationProcessor.java:124)
[ERROR] at lombok.core.AnnotationProcessor.init(AnnotationProcessor.java:177)
[ERROR] at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.init(AnnotationProcessor.java:73)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.
是第一次遇到吗? 执行时 加 mvn clean 试一下呢? 如果 还不行,试一下 升级版本 jprotobuf 2.4.9 plugin 2.2.6
配置:
<dependency>
<groupId>com.baidu</groupId>
<artifactId>jprotobuf-precompile-plugin</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.baidu</groupId>
<artifactId>jprotobuf</artifactId>
<version>2.4.9</version>
</dependency>
该情况有不少使用的同学反馈, 主要的原因是配置的本地maven仓库路径包含的空格导致,可以把空格去掉后再试
idea的启动类选择classpathFile,就可以了
解决了吗?