我正在做一个小课来保存和加载游戏中的信息,当我编写这个代码时:
import java.io.FileReader;
import java.io.FileWriter;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.ValidationException;
class InformationToStoreLoad{
public InformationToStoreLoad(){
}
}
public class GameSaverLoader {
/*
* Save the current game
*/
public void saveXML(){
FileWriter writer;
try {
writer = new FileWriter("save.xml");
Marshaller.marshal(new InformationToStoreLoad(), writer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* Load a game saved before
*/
public void loadXML()
{
try {
FileReader reader = new FileReader("article.xml");
InformationToStoreLoad gameToLoad =
(InformationToStoreLoad) Unmarshaller.unmarshal(InformationToStoreLoad.class, reader);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
我一直在 .NET 平台上工作,我对 Java 有点陌生,所以我不确定我是否做对了所有事情。要导出 Castor 库,我右键单击我的项目,选择属性,然后选择 Java 构建路径,然后选择库,最后单击“添加外部 JAR”并导出此 JAR:“castor-1.3.1- xml.jar"
但是,在使用 marshaller 和 unmarshaller 类时出现以下错误
Unhandled exception type ValidationException
如果我在快速修复中选择“将 catch 子句添加到周围的尝试”,那么我会收到以下错误:
No exception of type MarshalException can be thrown; an exception type must be a subclass of Throwable
The method printStackTrace() is undefined for the type MarshalException
No exception of type ValidationException can be thrown; an exception type must be a subclass of Throwable
The method printStackTrace() is undefined for the type ValidationException
同样在快速修复中,我可以选择这样做:
public void saveXML() throws MarshalException, ValidationException{
然后我得到这个错误:
不能抛出 MarshalException 类型的异常;异常类型必须是 Throwable 的子类
不能抛出 ValidationException 类型的异常;异常类型必须是 Throwable 的子类
我不知道如何解决这些错误,任何人都可以告诉我如何解决这个问题?
此致