我开始使用gRPC建立一个简单的Java聊天程序。
protc --version打印libprotoc 3.5.1
-proto文件:
import { TabNavigator } from 'react-navigation';
const Tabpage = TabNavigator(
{
tab1: {
screen: screen1,
navigationOptions: {
tabBarVisible: false,
tabBarLabel: 'Screen 1'
}, ...
}
export default class Tab extends React.Component {
constructor(props) {
super(props);
this.state = {
tabIndex: 2
};
this.updateTabIndex = this.updateTabIndex.bind(this);
}
updateTabIndex = tabIndex => {
console.log(tabIndex);
this.setState({ tabIndex });
switch (tabIndex) {
case 0:
console.log('nearby chosen');
// navigate('screen1'); // error: no function named navigate
// navigation.navigate('screen1'); // error: not a function
// this.navigate or this.navigation.navigate all fail too
break;
case 1: // etc.
default: // etc.
}
}
render() {
<View style={styles.tabsview}>
<ButtonGroup
containerBorderRadius={40}
selectedBackgroundColor='#FF0000'
onPress={ this.updateTabIndex }
selectedIndex={this.state.tabIndex}
buttons={['screen0', 'screen1', 'screen2']}
containerStyle={{ height: 30 }}
/>
</View>
// file end
为什么我需要设置选项java_generic_services?
class ChatImpl扩展了grpc.Verbindung { @覆盖 public void chatService(RpcController控制器,ClientPost请求,完成RpcCallback){ //为什么我会得到这种服务? } }
// 2.为什么我得到另一个班级名字?关闭是VerbindungImplBase
预期功能
syntax = "proto3";
option java_multiple_files = true;
option java_package = "grpc";
// whihout this Option i get no service
option java_generic_services = true;
option java_outer_classname = "ChatProto";
option objc_class_prefix = "HLW";
package chat;
message ClientPost {
string name = 1;
string value = 2;
}
message ServerReply {
ClientPost back = 1;
}
// The service definition.
service Verbindung {
rpc ChatService (stream ClientPost) returns (stream ServerReply);
}
可能是一个错误的protoc编译器/错误安装/缺少部件?
答案 0 :(得分:0)
您可能没有运行gRPC代码生成器。如果没有完全配置你如何运行protoc我不能指出太多的细节,但你可能只通过java_generic_services = true生成protobuf消息。
您不应该需要java_generic_services = true。相反,您应该像现在一样生成消息,但是也可以使用grpc-java插件。有when running protoc manually和我们的主要文档documents the preferred method的文档,使用Maven或Gradle插件。
答案 1 :(得分:0)
我有一个开放的suse leap 42.2系统 这个版本对grpc一无所知 - 这方面没有支持
我得到了编译的protoc - 它没有所需的Java-gen插件
找到https://github.com/grpc/grpc-java/blob/master/compiler/README.md
&#34;通常,您不需要自己编译codegen,因为Maven Central上提供了常用平台的预编译二进制文件。&#34;
我发现只有一些exe文件。 - 没用“
&#34;切换到编译器目录:&#34;
我没有编译器目录。 - 仍然试着找出我能得到的
NetBeans只有一个用于protofiles的编辑器插件 - 所以我的IDE无法使用gRPC
对于其他IDE,gRPC的Maven插件是有帮助的
我期待一个完整的protoc编译器以及所有需要的插件:-) 不是安装工具冒险。
对我来说是一个片刻:gRPC - 很棒的想法,但我得到了一个&#34;安装gRPC&#34;冒险