I am using protobuf 2.6.1 with java 8 (Oracle downloaded jdk 1.8.0) on linux ubuntu. I cannot locate any JAVA_HOME call in protobuf folder using 'grep'. How does protoc locate JAVA ? How can I check which version is used by who ?
Le jeudi 16 avril 2015 22:49:41 UTC+2, Feng Xiao a écrit : > > The error seems to suggest you are using a different version for protoc > and protobuf Java runtime. Could you check whether they are of the same > version? > > On Thu, Apr 16, 2015 at 3:29 AM, Tristan Soriano <[email protected] > <javascript:>> wrote: > >> >> Hi, >> I am new to protobufers and I have some issues with the generated java >> code. >> I am successfully generating a java class from the following .proto file : >> >> >> //////////////////////////////////////////////////////////////////////////////////////////////////////// >> option java_package = "org.myname.hbase.Coprocessor.autogenerated"; >> option java_outer_classname = "Sum"; >> option java_generic_services = true; >> option java_generate_equals_and_hash = true; >> option optimize_for = SPEED; >> message SumRequest { >> required string family = 1; >> required string column = 2; >> } >> >> message SumResponse { >> required int64 sum = 1 [default = 0]; >> } >> >> service SumService { >> rpc getSum(SumRequest) >> returns (SumResponse); >> } >> >> >> ////////////////////////////////////////////////////////////////////////////////////////////////////// >> >> However the generated code has error in SumResquest and SumResponse >> generated class : >> The auto generated method : HashCode( ) use an int "memoizedHashCode" as >> if it was an instance attribute but it is never declared. >> In SumRequest : >> >> @java.lang.Override >> public int hashCode() { >> if (memoizedHashCode != 0) { >> return memoizedHashCode; >> } >> int hash = 41; >> hash = (19 * hash) + getDescriptorForType().hashCode(); >> if (hasFamily()) { >> hash = (37 * hash) + FAMILY_FIELD_NUMBER; >> hash = (53 * hash) + getFamily().hashCode(); >> } >> if (hasColumn()) { >> hash = (37 * hash) + COLUMN_FIELD_NUMBER; >> hash = (53 * hash) + getColumn().hashCode(); >> } >> hash = (29 * hash) + getUnknownFields().hashCode(); >> memoizedHashCode = hash; >> return hash; >> } >> >> >> ////////////////////////////////////////////////////////////////////////////////////////////////////// >> In SumResponse I have an extra error : The method hashLong(long) is >> undefined for the type Internal >> >> @java.lang.Override >> public int hashCode() { >> if (memoizedHashCode != 0) { >> return memoizedHashCode; >> } >> int hash = 41; >> hash = (19 * hash) + getDescriptorForType().hashCode(); >> if (hasSum()) { >> hash = (37 * hash) + SUM_FIELD_NUMBER; >> hash = (53 * hash) + com.google.protobuf.Internal.hashLong( >> getSum()); >> } >> hash = (29 * hash) + getUnknownFields().hashCode(); >> memoizedHashCode = hash; >> return hash; >> } >> >> >> As we are not supposed to edit the code. Do you have any idea what the >> solution could be ? >> Should I add the missing attribute on my own, at what level and >> visibility ? How to solve my second issue ? >> Is there any risk to add directly "getSum( ) ? >> >> Thx >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Protocol Buffers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/protobuf. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
