2012-11-05 44 views
1

我想元帅延伸主题到XML类,代码如下:用JAXB编组活动对象?

@XmlRootElement 
public class TransitionXML extends Thread { 

ArcXML[] preArcs; 
ArcXML[] postArcs; 
int[] preArcTokens; 
int[] postArcTokens; 
int leastTime; 
int longestTime; 
String name; 

//some methods 

//a lot of get-set 

@Override 
public void run() { 
    while (true) { 
     if (this.postTransition() & this.preTransition()) { 
      //We take out the tokens. 
      this.executePreTranstion(); 
      this.checkPreTransition(); 


      try { 
       this.sleep(1000 * this.getTimeToPass()); 
      } catch (InterruptedException ex) { 
       Logger.getLogger(TransitionXML.class.getName()).log(Level.SEVERE, null, ex); 
      } 

      //We see if we can put them in. 
      if (this.postTransition()) { 
       this.executePostTranstion(); 
       this.checkPostTransition(); 
      } 

     } else { 
      try { 
       this.sleep(2000); 
      } catch (InterruptedException ex) { 
       Logger.getLogger(TransitionXML.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 
} 


} 

public TransitionXML() 
{ 

} 

} 

}

这使我这个错误:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions java.lang.Thread$UncaughtExceptionHandler is an interface, and JAXB can't handle interfaces. ... java.lang.Thread$UncaughtExceptionHandler does not have a no-arg default constructor.

如果我理解这个正确它延伸线程的事实会导致这个问题,但我没有看到网络上的解决方案。

有没有人知道解决方案或解决此问题,除了使该类实现可运行的对象?

回答

1

备注:我是EclipseLink JAXB (MOXy)的领导者和JAXB (JSR-222)专家组的成员。

如果您使用MOXy作为您的JAXB提供者,那么您可以按原样使用您的TransitionXML类。这是因为MOXy不会尝试为javajavax包(例如java.lang.Thread)中的类创建元数据。

您可以从以下位置获得莫西二进制:

要指定莫西为您的JAXB提供你需要把一个文件在同一个包为您的域名叫jaxb.properties具有以下条目的类(请参阅:http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html)。

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 
+0

我忘了提及我正在使用Netbeans,有什么方法可以将Moxy添加到它,插件也许? –