作为一名JAVA初学者,我尝试通过教程使用GRAL。我发现了以下错误:
java.lang.RuntimeException: java.io.IOException: Property file not found: drawablewriters.properties
此运行时错误来自以下未更改的GRAL源代码行:
public final class DrawableWriterFactory extends AbstractIOFactory<DrawableWriter> {
/** Singleton instance. */
private static DrawableWriterFactory instance;
/**
* Constructor that initializes the factory.
* @throws IOException if the properties file could not be found.
*/
private DrawableWriterFactory() throws IOException {
super("drawablewriters.properties"); //$NON-NLS-1$
}
/**
* Returns an instance of this DrawableWriterFactory.
* @return Instance.
*/
public static DrawableWriterFactory getInstance() {
if (instance == null) {
try {
instance = new DrawableWriterFactory();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return instance;
}
上面的类是另一个类中的引用,该类引用了最初运行的代码。
在阅读关键字super之后,在构造函数中使用时,似乎super绝不会将.properties文件作为参数。在这种情况下,它如何使用.properties文件?
我注意到在以下question中,通常使用新的InputStream来提取.properties文件的内容。这是以某种方式完成的超级?
另外,我只是尝试将drawablewriters.properties放在与上面源代码相同的目录中。这没有用。
答案 0 :(得分:0)
语法super("drawablewriters.properties");
仅仅是对这个类的超类的构造函数的调用。它可以包含一个超类'构造函数所采用的任何参数。在这种情况下,它正在调用AbstractIOFactory<DrawableWriter>
。
您的案例中的问题是文件drawablewriters.properties
不是超类构造函数可以找到它的位置。您应该查看AbstractIOFactory
的文档,了解它如何解析属性文件名。