尝试生成 Java Protobuf 代码时出现“package io.grpc 不存在”和“仅从类和接口静态导入”

Kur*_*eek 3 java protocol-buffers gradle grpc protobuf-java

我正在尝试按照此博客文章https://redbyte.eu/en/blog/calling-java-from-go-using-grpc/在此存储库中https://github.com/khpeek /pdf-解析器. 运行后./gradlew build,项目结构如下:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 classes\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 extracted-include-protos\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 google\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 protobuf\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 any.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 api.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compiler\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 plugin.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 descriptor.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 duration.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 empty.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 field_mask.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 source_context.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 struct.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 timestamp.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 type.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrappers.proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 extracted-protos\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 generated\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 source\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 proto\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grpc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 eu\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 redbyte\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pdfparser\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grpc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x82\xc2\xa0\xc2\xa0                 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 PDFParserGrpc.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 eu\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 redbyte\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pdfparser\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 grpc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 PDFParserApi.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ParserRequest.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ParserRequestOrBuilder.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                             \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ParserResponse.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0                             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ParserResponseOrBuilder.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sources\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 annotationProcessor\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 headers\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tmp\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compileJava\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 source-classes-mapping.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 MANIFEST.MF\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrapper\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 gradle-wrapper.properties\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradlew\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gradlew.bat\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 proto\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pdfparserapi.proto\n\n40 directories, 26 files\n
Run Code Online (Sandbox Code Playgroud)\n

问题是./gradlew build返回以下错误:

\n
> ./gradlew build\n\n> Task :compileJava FAILED\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:3: error: package io.grpc does not exist\nimport static io.grpc.MethodDescriptor.generateFullMethodName;\n                     ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:3: error: static import only from classes and interfaces\nimport static io.grpc.MethodDescriptor.generateFullMethodName;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:4: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:4: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:5: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.asyncClientStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:5: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.asyncClientStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:6: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.asyncServerStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:6: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.asyncServerStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:7: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.asyncUnaryCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:7: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.asyncUnaryCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:8: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.blockingServerStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:8: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.blockingServerStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:9: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.blockingUnaryCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:9: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.blockingUnaryCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:10: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ClientCalls.futureUnaryCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:10: error: static import only from classes and interfaces\nimport static io.grpc.stub.ClientCalls.futureUnaryCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:11: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:11: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:12: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncClientStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:12: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncClientStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:13: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncServerStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:13: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncServerStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:14: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncUnaryCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:14: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncUnaryCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:15: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:15: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:16: error: package io.grpc.stub does not exist\nimport static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;\n                          ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:16: error: static import only from classes and interfaces\nimport static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;\n^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:20: error: cannot find symbol\n@javax.annotation.Generated(\n                 ^\n  symbol:   class Generated\n  location: package javax.annotation\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:30: error: package io.grpc does not exist\n  private static volatile io.grpc.MethodDescriptor<eu.redbyte.pdfparser.grpc.ParserRequest,\n                                 ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:38: error: package io.grpc does not exist\n  public static io.grpc.MethodDescriptor<eu.redbyte.pdfparser.grpc.ParserRequest,\n                       ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:65: error: package io.grpc does not exist\n  public static PDFParserStub newStub(io.grpc.Channel channel) {\n                                             ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:111: error: package io.grpc.stub does not exist\n  public static final class PDFParserStub extends io.grpc.stub.AbstractStub<PDFParserStub> {\n                                                              ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:73: error: package io.grpc does not exist\n      io.grpc.Channel channel) {\n             ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:138: error: package io.grpc.stub does not exist\n  public static final class PDFParserBlockingStub extends io.grpc.stub.AbstractStub<PDFParserBlockingStub> {\n                                                                      ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:81: error: package io.grpc does not exist\n      io.grpc.Channel channel) {\n             ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:164: error: package io.grpc.stub does not exist\n  public static final class PDFParserFutureStub extends io.grpc.stub.AbstractStub<PDFParserFutureStub> {\n                                                                    ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:263: error: package io.grpc does not exist\n  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;\n                                 ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:265: error: package io.grpc does not exist\n  public static io.grpc.ServiceDescriptor getServiceDescriptor() {\n                       ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:165: error: package io.grpc does not exist\n    private PDFParserFutureStub(io.grpc.Channel channel) {\n                                       ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:169: error: package io.grpc does not exist\n    private PDFParserFutureStub(io.grpc.Channel channel,\n                                       ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:170: error: package io.grpc does not exist\n        io.grpc.CallOptions callOptions) {\n               ^\n/Users/kurtpeek/go/src/github.com/kurtpeek/pdf-parser/build/generated/source/proto/main/grpc/eu/redbyte/pdfparser/grpc/PDFParserGrpc.java:175: error: package io.grpc does not exist\n    protected PDFParserFutureStub build(io.grpc.Ch

Eri*_*son 7

io.grpc.*位于grpc-api(大多数其他 grpc 依赖项将依赖于此)。io.grpc.stub.*是在grpc-stub. io.grpc.protobuf.*是在grpc-protobuf. javax.annotation.Generated可以在 Tomcat 中找到annotations-api

所以你需要添加(如grpc-java readme中提到的):

implementation "io.grpc:grpc-protobuf:1.14.0"
implementation "io.grpc:grpc-stub:1.14.0"
compileOnly "org.apache.tomcat:annotations-api:6.0.53"
Run Code Online (Sandbox Code Playgroud)

gRPC v1.14.0 已经相当老了;您应该升级到较新的版本才能实际使用。要真正运行,您可能implementation 'io.grpc:grpc-netty-shaded:1.34.1'还需要。