java - 无法在 Glassfish 4.0 中执行 CDI

标签 java jakarta-ee glassfish cdi glassfish-4

我正在尝试使用 Glassfish 4.0 的最新升级版本运行一个特别简单的测试用例。我尝试将 META-INF/beans.xml 放置在所有可能的排列中,包括其自己的 jar 放在 WEB-INF/lib

我得到的最好结果是下面列出了布局+源的错误:

WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Test : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Test
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.Foo : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.Foo
WARNING: Error while trying to load Bean Class WEB-INF.classes.com.example.cdibug.App : java.lang.ClassNotFoundException: WEB-INF.classes.com.example.cdibug.App
INFO: Registering the Jersey servlet application, named com.example.cdibug.App, at the servlet mapping /rest/*, with the Application class of the same name.
INFO: Loading application [cdibug] at [/cdibug]
INFO: cdibug was successfully deployed in 106 milliseconds.

布局:

$ jar tvf cdibug.war 
     0 Tue May 07 23:19:48 HST 2013 META-INF/
    68 Tue May 07 23:19:48 HST 2013 META-INF/MANIFEST.MF
     0 Tue May 07 23:14:20 HST 2013 META-INF/beans.xml
     0 Tue May 07 23:19:32 HST 2013 WEB-INF/
     0 Tue May 07 23:18:58 HST 2013 WEB-INF/classes/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/
     0 Tue May 07 22:51:54 HST 2013 WEB-INF/classes/com/example/
     0 Tue May 07 23:09:34 HST 2013 WEB-INF/classes/com/example/cdibug/
   174 Tue May 07 22:54:28 HST 2013 WEB-INF/classes/com/example/cdibug/Test.java
   171 Tue May 07 22:54:04 HST 2013 WEB-INF/classes/com/example/cdibug/App.java
   309 Tue May 07 22:56:30 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.java
   398 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Test.class
   304 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/App.class
   634 Tue May 07 23:06:00 HST 2013 WEB-INF/classes/com/example/cdibug/Foo.class
$

beans.xml 的来源:

$ cat META-INF/beans.xml # EMPTY 0 bytes

App.java 的来源:

$ cat WEB-INF/classes/com/example/cdibug/App.java 
package com.example.cdibug;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class App extends Application {
}

Test.java 的来源:

$ cat WEB-INF/classes/com/example/cdibug/Test.java 
package com.example.cdibug;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/test")
public class Test {
  @GET
  public String greet () {
    return "hello";
  }
}

Foo.java 的来源:

$ cat WEB-INF/classes/com/example/cdibug/Foo.java 
package com.example.cdibug;

import java.util.logging.Logger;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Foo {
  public Foo () {
    System.out.println("stdout: Foo()");
    System.err.println("stderr: Foo()");
    Logger.getGlobal().info("global_log: Foo()");
  }
}

最佳答案

这是与 eclipse kepler m6 捆绑的版本中的一个错误。在4.0.0-b87下工作正常

关于java - 无法在 Glassfish 4.0 中执行 CDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437146/

相关文章:

java - 访问 Web 启动客户端自己的域以外的网站上的服务?

java - GlassFish 4.1 alternatedocroot,访问静态内容

java - Glassfish Embedded 容器有什么问题?

java - 通过 XPath 仅选择叶 SPAN 元素

java - 将 MongoDB 查询解析为 Java

jakarta-ee - 如何使用 JSTL 选择集合的第一个元素?

java - glassfish 将数据库名称与用户名混淆

java - 为什么一旦 run() 方法中的 if 语句为 true,我就不能再使用 keyPressed 了?

java - java中将ODT转换为doc/rtf格式

jakarta-ee - JAX-RS 运行时如何处理本示例中使用子资源的 PUT 请求?