How to create a multi-screen jar and filter input content?

I would like to create a multiscreen jar (for Java 8 and Java 9) with the command jar. There are several Netbeans IDE projects: com.jdojo.mrjar.jdk8, com.jdojo.mrjar.jdk9. The source code of the project is here . Using the command line, I go to the parent folder and run the command. When I try to do this:

jar --create --file mrjars/com.jdojo.mrjar.jar
    -C com.jdojo.mrjar.jdk8/build/classes .
    --release 9 -C com.jdojo.mrjar.jdk9/build/classes .

I get a message:

Warning: entry META-INF/versions/9/.netbeans_automatic_build contains a class that
is identical to an entry already in the jar
Warning: entry META-INF/versions/9/.netbeans_update_resources contains a class that
is identical to an entry already in the jar
java.nio.file.NoSuchFileException: java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
        at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:384)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:288)
        at java.base/java.nio.file.Files.move(Files.java:1413)
        at jdk.jartool/sun.tools.jar.Main.validateAndClose(Main.java:460)
        at jdk.jartool/sun.tools.jar.Main.run(Main.java:343)
        at jdk.jartool/sun.tools.jar.Main.main(Main.java:1670)

I think this is due to the presence of development environment service files. Is it possible to filter them (select only files of a certain type of files for packaging by banks)?


Banking operations described in the Java Platform Standard Edition Help .

+4
1

:

cd com.jdojo.mrjar.jdk8/build/classes && jar -c -f com.jdojo.mrjar.jar $(find -name *.class) && cd ../../.. && mv -f com.jdojo.mrjar.jdk8/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/build/classes  && cd com.jdojo.mrjar.jdk9/build/classes  && jar -u -f com.jdojo.mrjar.jar --release 9 $(find -name *.class) && cd ../../.. && mv -f com.jdojo.mrjar.jdk9/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/mrjars

  • "com.jdojo.mrjar.jdk8/build/classes":
    cd com.jdojo.mrjar.jdk8/build/classes
  • jar :
    jar -c -f com.jdojo.mrjar.jar $(find -name *.class)
  • :
    cd ../../..
  • jar :
    mv -f com.jdojo.mrjar.jdk8/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/build/classes
  • :
    cd com.jdojo.mrjar.jdk9/build/classes
  • jar:
    jar -u -f com.jdojo.mrjar.jar --release 9 $(find -name *.class)
  • :
    cd ../../..
  • jar :
    mv -f com.jdojo.mrjar.jdk9/build/classes/com.jdojo.mrjar.jar -t com.jdojo.mrjar.jdk9/mrjars

, .

+3

Source: https://habr.com/ru/post/1682990/


All Articles