我对嵌入的 payara micro 有疑问。我想在 Eclipse 中使用 payara micro 启动我的 java ee 应用程序。但它不起作用。
我创建了一个包含三个类的简单 java ee 项目。
@ApplicationPath("resources")
public class JAXRSConfiguration extends Application {
}
@Path("ping")
public class PingResource {
@GET
public String ping() {
return "Enjoy Java EE 8!";
}
}
最后是我的代码的“主要”类。
public class Startup {
public static void main(String... args) throws BootstrapException {
PayaraMicro.getInstance() //
.setHttpAutoBind(true) //
.bootStrap();
}
}
pom.xml 看起来像:
<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>com.lube</groupId>
<artifactId>payaramicro</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<payara.version>5.194</payara.version>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>fish.payara.extras</groupId>
<artifactId>payara-micro</artifactId>
<version>${payara.version}</version>
</dependency>
</dependencies>
<build>
<finalName>payaramicro</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath />
<argument>com.lube.Mona</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
启动后我收到以下错误:
Exception in thread "main" fish.payara.micro.BootstrapException: Provider org.glassfish.json.JsonProviderImpl not found
at fish.payara.micro.impl.PayaraMicroImpl.bootStrap(PayaraMicroImpl.java:1076)
at fish.payara.micro.PayaraMicro.bootStrap(PayaraMicro.java:143)
at com.lube.Startup.main(Startup.java:10)
Caused by: javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
at javax.json.spi.JsonProvider.provider(JsonProvider.java:99)
at javax.json.Json.createWriterFactory(Json.java:253)
at fish.payara.appserver.micro.services.data.InstanceDescriptorImpl.toJsonString(InstanceDescriptorImpl.java:301)
at fish.payara.micro.impl.PayaraMicroImpl.dumpFinalStatus(PayaraMicroImpl.java:2596)
at fish.payara.micro.impl.PayaraMicroImpl.bootStrap(PayaraMicroImpl.java:1068)
... 2 more
Caused by: java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at javax.json.spi.JsonProvider.provider(JsonProvider.java:96)
... 6 more
我的项目的目标是使用 eclipse 轻松启动应用程序(调试等)
我还尝试使用 payara micro github 页面(https://github.com/payara/Payara-Examples/blob/master/payara-micro/simplest )上描述的命令“mvn compile exec:exec”启动应用程序-bootstrap/pom.xml )
使用命令payara成功启动,但页面“resources/ping”不可用。
是否可以在同一个项目中拥有 java ee 代码和 payara 嵌入 main 方法?
BR卢卡斯