我是iPOJO的新手。作为学习iPOJO框架的一部分,我发现了以下问题。
我正在发布一个服务'ServicePropertiesExample',其服务属性为'when',初始值/默认值设置为0.此服务属性附加到字段'count'。 当字段'count'设置为null时,服务属性'when'未发布(如http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html中的iPOJO文档)
但是当我从值NullPointerException
重新分配字段'count'时,我得到null
。我想重新发布此服务属性。怎么办呢?
@ServiceProperty(name = "when", value = "0")
private String count;
public ServicePropertiesExample() {
try {
SwingUtilities
.invokeAndWait(() -> {
panel = new JPanel();
JButton setPropertyValueTo1 = new JButton(
"Update Service Properties");
setPropertyValueTo1.addActionListener((e) -> {
count = String.valueOf(1);
});
JButton setPropertyValueToNull = new JButton("Set Property value to null");
setPropertyValueToNull.addActionListener((e)->{
System.out.println("Setting property value to null");
count = null;
});
panel.add(setPropertyValueTo1);
panel.add(setPropertyValueToNull);
});
} catch (InvocationTargetException | InterruptedException e) {
e.printStackTrace();
}
}
以下是例外:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.__M_onSet(ProvidedServiceHandler.java:417)
at org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.onSet(ProvidedServiceHandler.java)
at org.apache.felix.ipojo.InstanceManager.onSet(InstanceManager.java:1401)
at com.steve.swing.components.ServicePropertiesExample.__setcount(ServicePropertiesExample.java)
at com.steve.swing.components.ServicePropertiesExample.__M_lambda$1(ServicePropertiesExample.java:49)
at com.steve.swing.components.ServicePropertiesExample.lambda$1(ServicePropertiesExample.java)
at com.steve.swing.components.ServicePropertiesExample$$Lambda$3/2135247888.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
....
答案 0 :(得分:0)
您无法指定' null'到服务财产。尝试使用其他值,例如0或-1。