我正在按照这个优秀的教程学习 Java EE、Glassfish 和 EJB 。
我被困在第 9.i 节。我得到了作者提到的 java.lang.reflect.InvocationTargetException 错误,并做了与他相同的修复。但是,我仍然遇到同样的错误,并且我一直在寻找答案已经有一段时间了。这是我尝试过的。
持久性.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="cookbookEJB">
<jta-data-source>jdbc/cookbook</jta-data-source>
<class>com.davidlacerte.cookbook.entity.City</class>
<class>com.davidlacerte.cookbook.entity.Country</class>
<properties>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
</persistence>
我的 Glassfish 安装确实有一个 jdbc/cookbook JDBC 资源。现在,我添加了以下代码,因为 Glassfish 堆栈跟踪没有帮助:
@Override
public long countryCount() {
try
{
return eao.countCountries();
}
catch(Exception e)
{
Throwable t = e.getCause();
while(t != null)
{
System.out.println(t.getMessage());
t = t.getCause();
}
}
return -1;
}
这是输出:
INFO: Exception thrown from bean: java.lang.VerifyError: Expecting a stackmap frame at branch target 16 in method com.davidlacerte.cookbook.entity.City._persistence_checkFetched(Ljava/lang/String;)V at offset 5
INFO: Expecting a stackmap frame at branch target 16 in method com.davidlacerte.cookbook.entity.City._persistence_checkFetched(Ljava/lang/String;)V at offset 5
我用谷歌搜索了“除了堆栈图框架...”错误,许多博客建议-XX:-UseSplitVerifier
在我的 VM 参数中添加一个参数:我做到了,没有运气。
所以,这就是我所知道的以及我目前所尝试的全部。正如我所说,我对 EJB 和 Glassfish 了解不多,所以如果您需要更多信息,请询问。我有点生气,在这里。
编辑:只需重新阅读服务器日志并发现:
WARNING: Container org.glassfish.webservices.JAXWSContainer@3dbfc326 doesn't support class com.sun.xml.ws.api.server.Module
谢谢您的帮助。