gocPC protoc编译器创建的不是预期的

时间:2018-05-23 18:51:20

标签: java grpc protoc

我开始使用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

  1. 为什么我需要设置选项java_generic_services?

    class ChatImpl扩展了grpc.Verbindung {     @覆盖     public void chatService(RpcController控制器,ClientPost请求,完成RpcCallback){       //为什么我会得到这种服务?     } }

  2. // 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);
    }
    
    1. 我该怎样做才能获得这种预期的服务功能?
    2. 可能是一个错误的protoc编译器/错误安装/缺少部件?

2 个答案:

答案 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;冒险