2012-06-21 3 views
0

Google 프로토콜 버퍼를 사용하는 간단한 프로그램 (Java로 작성)이 있으며 Windows 컴퓨터에서 정상적으로 작동합니다.Google 프로토콜 버퍼는 Windows에서는 작동하지만 Linux에서는 작동하지 않습니다.

그러나 나는 다음과 같은 예외가 리눅스 시스템에서 실행 때

com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Ljava/lang/String;[Lcom/google/protobuf/Descriptors$FileDescriptor;Lcom/google/protobuf/Descriptors$FileDescriptor$InternalDescriptorAssigner; 
    at com.test.integration.protocols.protocolBuffers.messages.TestMsgs.<clinit>(TestMsgs.java:5111) 
    at com.test.integration.protocols.protocolBuffers.messages.TestMsgs$SessionInfo.<clinit>(TestMsgs.java:3346) 
    at com.test.integration.protocols.protocolBuffers.messages.TestMsgs$TestRequest.<init>(TestMsgs.java:782) 
    at com.test.integration.protocols.protocolBuffers.messages.TestMsgs$TestRequest.<clinit>(TestMsgs.java:760) 
    at com.test.simulators.TestJmsListener.onMessage(TestJmsListener.java:80) 
    at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1215) 
    at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) 
    at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) 
    at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) 
    at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) 
    at java.lang.Thread.run(Thread.java:619) 

나는 두 시스템의 프로토콜 버퍼 같은 jar 파일을 사용합니다.

+2

이것은 오류 메시지의 일부처럼 보입니다. 전체 스택 추적을 제공하거나 프로그램의 전체 출력을 향상시킬 수 있습니까? –

+0

전체 추적을 추가했습니다. 이 문제와 관련된 유일한 출력입니다 – giorashc

+0

오류 메시지는 파일 설명자에 대해 뭔가를 말합니다. 앱에 파일 경로 또는 경로 처리 코드가있을 수 있습니다 (예 : 슬래시와 백 슬래시를 혼합하거나 하나의 OS에서만 유효하지만 다른 경로에서는 유효하지 않은 절대 경로를 사용합니까? –

답변

2

Protoc과 protobuf 런타임 라이브러리 (jar)는 밀접하게 결합되어 있습니다. 더 새로운 런타임을 가진 오래된 protoc이나 그 반대로 사용할 수 없습니다. Windows 및 Linux에서 protobuf jar 파일과 정확히 동일한 버전을 사용하는지 다시 확인하십시오.이 버전은 Java 코드를 생성하는 데 사용 된 protoc 버전과 동일합니다.

+0

많은 재시도 후에 버전 2.1.0으로 모든 것을 되돌려 놓았습니다. 내가 옳고이 문제에 가장 가까운 대답으로 나는이 대답을 받아 들인다. (비록 내 솔루션의 일부가 이전 버전으로 되 돌렸지 만) 고마워! – giorashc

관련 문제