NoClassDefFoundError: com/sun/mail/util/MailLogger

Wenn man die Fehlermeldung bekommt

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger
        at javax.mail.Session.initLogger(Session.java:283)
        at javax.mail.Session.(Session.java:268)
        at javax.mail.Session.getDefaultInstance(Session.java:378)
        at javax.mail.Session.getDefaultInstance(Session.java:418)
        at eu.masterdevops.sendmail.App.main(App.java:25)
Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        … 5 more

dann fehlt vermutlich eine Abhängigkeit in der pom.xml:

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
</dependency>

Cannot find default setter in class org.apache.maven.archiver.ManifestConfiguration

Beim Bauen eines meiner Java-Projekte bekam ich nach dem Anpassen der pom.xml diese Fehlermeldung

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single
(default-cli) on project <projektname>: Unable to parse configuration of mojo
org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single for parameter manifest:
Cannot find default setter in class org.apache.maven.archiver.ManifestConfiguration -> [Help 1]

Wie es sich herausgestellt hat, hatte ich eine falsche Einstellung in die pom.xml geschrieben (Fehler hier fett abgebildet):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>      <manifest>com.project.projectname.App</manifest>
    </archive>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

Zwischen <manifest> und </manifest> hätte was anderes rein müssen als die Main-Class:

<archive>
   <manifest>
     <mainClass>com.project.projectname.App </mainClass>
   </manifest>
 </archive>

Nach diese Änderung ist die Fehlermeldung verschwunden.

‘build.plugins.plugin.version’ for … is missing.

Kürzlich habe ich versucht, ein Projekt mit Maven zu bauen und bekam während des Bauens diese Warnung:

[WARNING]
[WARNING] Some problems were encountered while building the effective model for ::jar:
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 17, column 15
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

Wie es sich herausgestellt hat, hat bei einem verwendeten Maven-Plugin die Versionsangabe gefehlt. In der verwendeten pom.xml wurde das Maven-Plugin maven-jar-plugin verwendet, aber die Version hat gefehlt:

<plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>com.somepackage.SomeMainClass</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>

Die Version für das Plugin konnte ich recht leicht herausfinden und anschließend die pom.xml anpassen:

 <plugin>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.1.2</version>
  <configuration>
    <archive>
      <manifest>
        <mainClass>com.somepackage.SomeMainClass</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin> 

Danach ist die Warnung verschwunden.