On Fri, Apr 17, 2015 at 1:40 AM, Tristan Soriano <[email protected]> wrote:
> 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 ? > Can you check the protoc version with "protoc --version"? How did you compile your Java code? If you used Maven, what's protobuf version you specified in your pom.xml file? > > > > 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]> >> 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]. >>> 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. >>> >> >> -- > 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. > -- 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.
