# Externe Bibliotheken modularisieren



## memo1990 (28. Dez 2018)

Hallo liebes Java-forum.org-Community,

ich möchte mein Programm modular (Jigsaw) ausliefern. Da ich aber externe Bibliotheken, wie JavaMail und JAF verwende, weiß ich nicht wie die mit einbinde. Denn die Bibliotheken sind nicht als Module veröffentlicht (kein module-info.class). Wie gehe ich da vor am besten vor?

MfG
memo1990


----------



## memo1990 (1. Jan 2019)

Ich habe mich weiter eingelesenen und behandele die externe Bibliothek jetzt als _Automatic Module_. Wenn ich aber mit jlink mein Programm linken möchte, bekomme ich folgende Fehlermeldung:


```
Error: automatic module cannot be used with jlink: java.mail from file:///C:/Users/Username/Desktop/Project/libs/javax.mail-1.6.2.jar
```


----------



## mihe7 (1. Jan 2019)

Wenn ich es richtig sehe (https://github.com/eclipse-ee4j/javamail/blob/master/mailapi/src/main/java/module-info.java), gibt es JavaMail bereits modularisiert.

Für den allgemeinen Fall gibt Stackoverflow Auskunft: https://stackoverflow.com/questions...fo-for-automatic-modules-with-jdeps-in-java-9


----------



## memo1990 (17. Jan 2019)

Hallo,

danke @mihe7. Ich werde es mir mal anschauen. Vor allem der Thread in Stackoverflow. Denn man hat mehrere externe Libs die man, zusammen mit der Anwendung, modularisiert aushändigen möchte.


----------



## memo1990 (24. Jan 2019)

Hallo liebes Java-Forum,

ich muss das Thema nochmal hervorheben. Ich bekomme es nicht hin für die Drittanbieter-Bibliotheken ein module-info.java zu kompilieren.

Ich habe die JAR entpackt, die module-info.java mit *jdeps *generiert und in das Root-Verzeichnis gelegt. Wenn ich z.B. die JAF (JavaBeans Activation Framework) mit dem generierten Module Descriptor kompilieren möchte, bekomme ich folgende Fehlermeldung:


```
javac -d out --module-source-path mods --module activation
mods\activation\module-info.java:7: error: package is empty or does not exist: com.sun.activation.registries
    exports com.sun.activation.registries;
                              ^
mods\activation\module-info.java:8: error: package is empty or does not exist: com.sun.activation.viewers
    exports com.sun.activation.viewers;
                              ^
mods\activation\module-info.java:9: error: package is empty or does not exist: javax.activation
    exports javax.activation;
                 ^
3 errors
```

Hier noch das Verzeichnissbaum vom Module:



Spoiler: Tree





```
C:.
│   module-info.java
│
├───com
│   └───sun
│       └───activation
│           ├───registries
│           │       LineTokenizer.class
│           │       LogSupport.class
│           │       MailcapFile.class
│           │       MailcapParseException.class
│           │       MailcapTokenizer.class
│           │       MimeTypeEntry.class
│           │       MimeTypeFile.class
│           │
│           └───viewers
│                   ImageViewer.class
│                   ImageViewerCanvas.class
│                   TextEditor.class
│                   TextViewer.class
│
├───javax
│   └───activation
│           ActivationDataFlavor.class
│           CommandInfo.class
│           CommandMap.class
│           CommandObject.class
│           DataContentHandler.class
│           DataContentHandlerFactory.class
│           DataHandler$1.class
│           DataHandler.class
│           DataHandlerDataSource.class
│           DataSource.class
│           DataSourceDataContentHandler.class
│           FileDataSource.class
│           FileTypeMap.class
│           MailcapCommandMap.class
│           MimeType.class
│           MimeTypeParameterList.class
│           MimeTypeParseException.class
│           MimetypesFileTypeMap.class
│           ObjectDataContentHandler.class
│           SecuritySupport$1.class
│           SecuritySupport$2.class
│           SecuritySupport$3.class
│           SecuritySupport$4.class
│           SecuritySupport$5.class
│           SecuritySupport.class
│           UnsupportedDataTypeException.class
│           URLDataSource.class
│
└───META-INF
        mailcap.default
        MANIFEST.MF
        mimetypes.default
        SUN_MICR.RSA
        SUN_MICR.SF
```




Was mache ich falsch?

MfG memo1990


----------



## memo1990 (1. Feb 2019)

Guten Morgen,

hat keiner eine Lösung darauf bzw. warum das obige nicht funktioniert?

MfG memo1990


----------

