Микро ошибка Payara: при сканировании TLD предоставленный файл ресурсов не существует
Приложение представляет собой привет мир, созданный с помощью плагина NetBeans Payara Micro: оно содержит только index.html и основной класс, который пишет "привет мир".
Я добавил зависимость в POM, чтобы проверить, что внешние библиотеки обрабатываются правильно. Я не хочу Uber JAR, поэтому мой POM помещает libs в /lib
папка внутри /target
папка
Я создаю приложение в NetBeans, затем открываю оболочку в /target
папка, развертываемая с помощью:
java -jar ../payara-micro-5.183.jar myApp.war --addLibs lib/
(после этого документа по добавлению файлов JAR в развертывании)
Сервер запускается и приложение развертывается, но отсутствуют внешние библиотеки:
PWC6351: In TLD scanning, the supplied resource file:/C:/Users/LEVALL~1/AppData/Local/Temp/payaramicro-rt8447922723645389161tmp/applications/lib/utils-1.0.jar does not exist
java.io.FileNotFoundException: C:\Users\LEVALL~1\AppData\Local\Temp\payaramicro-rt8447922723645389161tmp\applications\lib\utils-1.0.jar (Le chemin dÆaccÞs spÚcifiÚ est introuvable)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
POM для справки:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.clementlevallois</groupId>
<artifactId>qof-back-email</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>qof-back-email</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.javaee>8.0</version.javaee>
<version.payara>5.183</version.payara>
<version.microprofile>2.0.1</version.microprofile>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>utils</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>${version.javaee}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.microprofile</groupId>
<artifactId>microprofile</artifactId>
<version>${version.microprofile}</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>net.clementlevallois.qof.back.email.Controller</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
1 ответ
Вы должны удалить addClasspath
Конфигурация в вашем файле pom.xml, в плагине WAR. Тогда ваша команда с --addLibs
буду работать.
Ваша текущая конфигурация в MANIFEST внутри WAR дает указание искать JAR-файлы в папке, где находится WAR. Это не работает с Payara Micro, потому что файл WAR сначала копируется во временную папку перед его развертыванием. Поскольку файлы JAR не находятся в этой папке, они не найдены.
Вам нужно создать WAR-файл без указания пути к классу, указанного в MANIFEST, а затем просто использовать --addLibs
аргумент для предоставления дополнительных JAR.
Так что если вы просто удалите следующее из вашего pom.xml, все должно работать:
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>net.clementlevallois.qof.back.email.Controller</mainClass>
</manifest>
</archive>