Java 禁用来自外部库类的警告消息

Java 禁用来自外部库类的警告消息,java,log4j,warnings,jena,Java,Log4j,Warnings,Jena,我重新阅读了中的许多主题,但没有一个答案对我有用 问题是什么:我有java代码,我在其中做: Requirement req = response.getEntity(Requirement.class); 并警告: WARNING: Property http://localhost/ttrDef-5 could not be parsed as datatype http://www.w3.org/2001/XMLSchema#dateTime com.hp.hpl.jena.dataty

我重新阅读了中的许多主题,但没有一个答案对我有用

问题是什么:我有java代码,我在其中做:

Requirement req = response.getEntity(Requirement.class);
并警告:

WARNING: Property http://localhost/ttrDef-5 could not be parsed as datatype http://www.w3.org/2001/XMLSchema#dateTime
com.hp.hpl.jena.datatypes.DatatypeFormatException: Lexical form '2015-06-10' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] Lexical form '2015-06-10' is not a legal instance of Datatype[http://www.w3.org/2001/XMLSchema#dateTime -> class com.hp.hpl.jena.datatypes.xsd.XSDDateTime] during parse -org.apache.xerces.impl.dv.InvalidDatatypeValueException: cvc-datatype-valid.1.2.1: '2015-06-10' is not a valid value for 'dateTime'.
    at com.hp.hpl.jena.graph.impl.LiteralLabelImpl.getValue(LiteralLabelImpl.java:339)
    at com.hp.hpl.jena.graph.Node_Literal.getLiteralValue(Node_Literal.java:39)
    at com.hp.hpl.jena.rdf.model.impl.LiteralImpl.getValue(LiteralImpl.java:98)
    at org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper.handleExtendedPropertyValue(JenaModelHelper.java:1079)
    at org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper.fromResource(JenaModelHelper.java:584)
    at org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper.createObjectResultList(JenaModelHelper.java:457)
    at org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper.fromJenaModel(JenaModelHelper.java:395)
问题来自于JenaModelHelper类中的警告

 catch(DatatypeFormatException e)
                    {
/*1083*/                able(Level.WARNING))

/*1086*/                        logger.log(Level.WARNING, (new StringBuilder()).append("Property ").append(propertyQName.getNamespaceURI()).append(propertyQName.getLocalPart()).append(" could not be parsed as datatype ").append(literal.getDatatypeURI()).toString(), e);
所以我想挂起这条消息,不是所有其他消息,只是这条。我也是

Logger.getLogger(org.eclipse.lyo.oslc4j.provider.jena.JenaModelHelper.class).setLevel(Level.OFF);
Requirement req = response.getEntity(Requirement.class);

但是什么也没有发生,这个警告仍然会被转储到控制台中。我对这段代码进行了for循环,通过了100多次,有100个警告堆栈跟踪。这就产生了问题

我有log4J.config.xml,但是在那里我没有看到任何关于ConsolePender的内容


如何仅针对此类JenaModelHelper甚至包消除警告?

这将使您的工作完美完成:

final PrintStream err = new PrintStream(System.err);
System.setErr(new PrintStream("/dev/null"));

// ...

System.setErr(err); // dont forget to close it 

可能需要在log4j配置中显式设置注销。还要检查log4j从何处初始化。“2015-06-10”确实不是需要时间的xsd:dateTime。如果可以,请将数据类型设置为xsd:date或修复lexcial表单以包含“T00:00:00”或某个适当的时间。“@SuppressWarnings(“unchecked”)”是关于编译器警告,而不是运行时警告。@AndyS如何理解log4j从外部库中的何处初始化?这是JenaModelHelper的问题,请询问开发人员。它来自OSCL4j,而不是杰娜。
@SuppressWarnings("unchecked")
Requirement req = response.getEntity(Requirement.class);
final PrintStream err = new PrintStream(System.err);
System.setErr(new PrintStream("/dev/null"));

// ...

System.setErr(err); // dont forget to close it