title: Dependency name inconsistent in google protobuf 2.5.0
body: <p>I have an web application which I run in windows and linux environment. In linux and <em>only</em> linux I'm getting following exception:</p>
  
  <pre><code>Caused by:
  java.lang.IllegalArgumentException: Invalid embedded descriptor for "moop_shared.proto".
          at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:301)
          ...
  
  Caused by:
  com.google.protobuf.Descriptors$DescriptorValidationException: moop_shared.proto: Dependencies passed to FileDescriptor.buildFrom() don't match those listed in the FileDescriptorProto.
          at com.google.protobuf.Descriptors$FileDescriptor.buildFrom(Descriptors.java:246)
          at com.google.protobuf.Descriptors$FileDescriptor.internalBuildGeneratedFileFrom(Descriptors.java:299)
          ...
  </code></pre>
  
  <p>So I debugged it both locally and remotely comparing the result. I can't understand the following:</p>
  
  <p><strong>Env:</strong></p>
  
  <p>protobuf-java-2.5.0</p>
  
  <p>java 7</p>
  
  <hr>
  
  <p>In both cases I run the very same webapp and I'm on the very same place in code which is <code>com.google.protobuf.Descriptors.java#245</code> <a href="https://code.google.com/p/protobuf/source/browse/trunk/java/src/main/java/com/google/protobuf/Descriptors.java?r=425" rel="noreferrer">see code</a></p>
  
  <p>For the context</p>
  
  <pre><code>...
  for (int i = 0; i &lt; proto.getDependencyCount(); i++) {
  HERE --&gt; if (!dependencies[i].getName().equals(proto.getDependency(i))) {
            throw new DescriptorValidationException(result,
              "Dependencies passed to FileDescriptor.buildFrom() don't match " +
              "those listed in the FileDescriptorProto.");
          }
        }
  ...
  </code></pre>
  
  <p>And here are the information from debugger:</p>
  
  <p><strong>Windows:</strong></p>
  
  <pre><code>dependencies[i].getName() = {java.lang.String@3681}"descriptor.proto"
  proto.getDependency(i) = {java.lang.String@3682}"descriptor.proto"
  dependencies[i].getClass().getProtectionDomain().getCodeSource().getLocation().getPath() = {java.lang.String@3846}"/C:/Apps/Apache/jakarta/tomcat/webapps/ROOT/WEB-INF/lib/protobuf-java-2.5.0.jar"
  </code></pre>
  
  <p><strong>Linux:</strong></p>
  
  <pre><code>dependencies[i].getName() = {java.lang.String@2444}"google/protobuf/descriptor.proto"
  proto.getDependency(i) = {java.lang.String@2445}"descriptor.proto"
  dependencies[i].getClass().getProtectionDomain().getCodeSource().getLocation().getPath() = {java.lang.String@2608}"/tmp/jetty-0.0.0.0-8080-cnc-webapp-1.6.3-SNAPSHOT.war-_-any-/webapp/WEB-INF/lib/protobuf-java-2.5.0.jar"
  </code></pre>
  
  <p>So both dependecies are loaded from the protobuf jar which is byte indetical (checked) but the result of <code>dependencies[i].getName()</code> is different which in the Linux case cause the <code>DescriptorValidationException</code>. This is something which is beside my understanding. </p>
  
  <p>Any help will be much appreciated.</p>