Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6485027

javac incorrectly handles relative paths in manifest classpath

    Details

    • Subcomponent:
    • Introduced In Build:
      b03
    • Introduced In Version:
    • Resolved In Build:
      b132
    • CPU:
      x86
    • OS:
      windows_2000
    • Verification:
      Verified

      Backports

        Description

        The first problem is that javac tool running on Windows doesn't understand a relative path within
        manifest section, e.g:
          Manifest-Version: 1.0
          Class-Path: ../A.jar

        This ends up with such kind of error:
          javac -cp jars/A.jar Main.java
          error: error reading jars\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\
          .\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..
          \.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\..\.\sub\.
          .\.\sub\B.zip; The system cannot find the path specified
          1 error

        The second problem is that javac doesn't preserve Class-Path manifest entries for JAR files
        in the extensions directories. (the JAR files need to be in different directories to demonstrate
        this, because all JAR files in an extensions directory are searched anyway).
        This bug could be seen on all platforms.

        Error looks like this:

          javac -extdirs jars -cp None Main.java
          Main.java:3: cannot find symbol
          symbol : variable B
          location: class Main
              public static void main(String []a) { System.exit(A.f() + B.f()); }
                                                                      ^
          Main.java:3: operator + cannot be applied to int,B.f
              public static void main(String []a) { System.exit(A.f() + B.f()); }
                                                                 ^
          Main.java:3: exit(int) in java.lang.System cannot be applied to (<nulltype>)
              public static void main(String []a) { System.exit(A.f() + B.f()); }
                                                        ^
          3 errors

        This bugs are illustrated by the attached testcase. Run it by executig:
         $ sh Class-Path2.sh

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  jjg Jonathan Gibbons
                  Reporter:
                  mbelopuhsunw Mike Belopuhov (Inactive)
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Imported:
                    Indexed: