小编Mur*_*rli的帖子

EclipseLink-Moxy无法在实例化JAXB上下文时加载自定义DomHandler类

我在我的项目中使用Eclipselink Moxy实现JAXB,使用XmlAnyElement将复杂的XML映射到String对象.为此,我实现了名为LayoutHandler的DomHandler.我正在使用JAXB来部署在JBoss 6中的resteasy Web服务.

我间歇性地面对下面的问题 -

    Exception [EclipseLink-50033] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): 
org.eclipse.persistence.exceptions.JAXBException
Exception Description: The DomHandlerConverter for DomHandler 
[com.**.LayoutHandler] set on property [layoutXml] could not be 
initialized.
Internal Exception: java.lang.ClassNotFoundException: 
com.**.LayoutHandler from 
BaseClassLoader@5c0b3ad0{vfs:///*/*/jboss-server/server/all/deployers/resteasy.deployer}
    While EclipseLink Moxy is instantiating JAXBContext using JAXBContext.newInstance(classes, properties)
Run Code Online (Sandbox Code Playgroud)

在花了一些时间调试和分析问题后,我可以发现resteasy的ClassLoader习惯于加载LayoutHandler类而不是我的应用程序类加载器(vfs:/// //jboss-server/server/all/deploy/app_name .ear/app_name.war /)导致该问题无法找到LayoutHandler类.

当我退回服务器时,问题得到解决,所以我无法找到确切的根本原因.任何帮助将不胜感激.

进一步调试到org.eclipse.persistence.jaxb.JAXBContextFactory后发现,下面两个类被传递给JAXBContextFactory的createContext()方法 -

org.jboss.resteasy.plugins.providers.jaxb.JaxbCollection
com.**.Model_class

public static javax.xml.bind.JAXBContext createContext(Class[] classesToBeBound, Map properties) throws JAXBException {
        ClassLoader loader = null;
        if (classesToBeBound.length > 0) {
            loader = classesToBeBound[0].getClassLoader();
        }
        return createContext(classesToBeBound, properties, …
Run Code Online (Sandbox Code Playgroud)

jboss jax-rs jaxb eclipselink moxy

5
推荐指数
1
解决办法
107
查看次数

Java - 在匿名内部类中使用非最终变量?

在学校测试中,我在anonyme内部类中使用了非final变量.在学校计算机和我的私人计算机上(使用x86 jre1.8.0_45)它正在工作.

然而,在教师笔记本电脑Eclipse上显示错误(变量应该使用final).他正在使用jre1.8.0.x版本(不知道具体版本).

任何想法为什么它在我的电脑而不是他的电脑上工作?

在此代码示例中,在ActionListener的actionPerformed函数中使用了无最终对象jLabel:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;

public class Main {
    public Main(String[] args) {
        JLabel jLabel = new JLabel();
        JButton button = new JButton();
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                jLabel.setText("xyz");

            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
132
查看次数

标签 统计

eclipselink ×1

java ×1

jax-rs ×1

jaxb ×1

jboss ×1

moxy ×1