我正在尝试实施gRPC,现在我遇到了各种各样的问题,但我就是不明白我做错了什么。我遵循这个文档:https://github.com/grpc/grpc-java/blob/master/README.md
现在,当我试图构建我的项目时,我总是会遇到这样的错误
error: package com.google.protobuf.GeneratedMessageV3 does not exist
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
在我的Android Studio外部库中,我有Pro buf-java-3.12.1 jar。
在我的project gradle文件中,我已将此添加到依赖项中:
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.14'
在我的应用程序gradle文件中:
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'
在dependencies中,我添加了:
implementation 'io.grpc:grpc-okhttp:1.35.0'
implementation 'io.grpc:grpc-protobuf-lite:1.35.0'
implementation 'io.grpc:grpc-stub:1.35.0'
compileOnly 'org.apache.tomcat:annotations-api:6.0.53'
implementation 'com.google.protobuf:protobuf-javalite:3.12.1'
在android标签之外:
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.12.1"
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.35.0'
}
}
generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
最后,我的proto文件:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
option java_package = "com.xxx.xxx.proto.log";
option java_outer_classname = "MyClass";
message MyObject {
string name = 1;
string unit = 2;
oneof value {
bool bool_value = 3;
sint32 int32_value = 4;
uint32 u_int32_value = 5;
google.protobuf.Timestamp timestamp_value = 6;
}
}
当我在终端中运行: pro c--version时,这是输出:
libprotoc 3.12.1
我是否必须添加其他内容,或者我在Gradle设置中遗漏了一些内容?
看起来您希望使用protobuf lite(对于Android项目来说很正常):
implementation 'io.grpc:grpc-protobuf-lite:1.35.0'
...
implementation 'com.google.protobuf:protobuf-javalite:3.12.1'
但是,目前您正在生成完整的Pro buf代码。您需要告诉java和grpc-java代码生成器通过选项为lite生成。如grpc-java Android helloworld示例中所示:
protobuf {
...
generateProtoTasks {
all().each { task ->
task.builtins {
java { option 'lite' }
}
task.plugins {
grpc { option 'lite' }
}
}
}
}
我正在尝试在intelliJ中制作一个jar文件。我的目录中保存了所有的java类是C:\transProject\src\cege。在cege中有一个包用户界面,其中有一个类guiMain。而且我已经在我的Main()类中导入了guiMain()。 我有以下代码行: 包装cege; 进口cege。用户界面。圭曼; 当我在intelliJ中使用终端并编写命令时: C:\trafficProject
我正在研究如何从命令行编译Java。我得到的是: 我得到的是: HelloWorld: inner.java 内部2.Java 我正在用编译这个文件,这个文件工作得很好。 现在我的理解是,因为helloworld.java在它的import语句中引用了其他包,所以javac会去编译这些包。我猜对于所有的Java包,javac在内部都有。 反正-如果我在helloworld.java中添加以下导入行
我得到了一个可怕的软件包,它根本不存在,简直要了我的命。代码很好,我在市场上有运行代码的应用程序。 现在它正在影响简单的应用程序。o.0 <代码>R.string。app_name是错误的my 。应该对应于R.java
我使用的是openjdk版本“1.8.0_252”,我还单独安装了javafx,目前的版本是javafx.version=11.0.2-internal。我已经在IntelliJ中添加了javafx库路径。编写代码javafx对时没有错误。但是,当我使用sudo mvn clean install构建项目时,我出现了以下错误,导致构建失败:
我是编译Hadoop代码的新手,知道这个问题已经被回答过多次了。但是,我仍然很难找到正确的类路径来编译WordCount.java代码。我正在运行一个CentOS版本7。 我的Hadoop版本是: 当我执行echo$path时,我得到了以下结果: 有人能给我指个正确的方向吗?谢谢你。
我是新手,正在尝试为JavaCard开发一个applet。当我从一个网站上跟踪一个示例代码时,我被困在这里了。NetBeans表示JavaCardX.Framework包不存在。 我就不会正确地链接Java经典Jar文件。请帮帮我
朋友们请帮忙。。。。我已经导入了twitter4j-core-4.0.4。jar在Play框架中引用库。因此,Java代码中没有错误,因为我已经导入了require包。。。。但当我运行activator时,我无法找到所有导入的符号。我从/home/intel/JARS/twitter4j-4.0.4/lib/twitter4j-core-4.0.4导入了Jar。jar Twitter控制器。爪哇请