2014-02-05 2 views
0

Я хочу написать в файл свойств. Я также читал из файла свойств. Посмотрите здесь Path for a properties file in mavenЗаписать в файл свойств из проекта maven

public void setProperty(String coll, String bez) throws URISyntaxException { 
    File file =null; 
    Properties properties = getProperties();  
    URL url = Thread.currentThread().getContextClassLoader().getResource("/jsfatwork/messages/test.properties"); 
    URL url2 = PageServiceBean.class.getResource("/jsfatwork/messages/test.properties");        
    try {  
     file = new File(url.toURI().getPath());    
     properties.setProperty(bez, coll); 
     System.out.println("Ich habe einen Wert gesetzt"); 
     properties.store(new FileOutputStream(file), null);  
     System.out.println("Die Datei wurde gespeichert"); 
    } catch (IOException ex) { 
     Logger.getLogger(PageServiceBean.class.getName()).log(Level.SEVERE, null, ex);    
    } 
} 

Выход консоли:

Ich habe einen Wert gesetzt 
Die Datei wurde gespeichert 

Так что я думаю, что это работает, но после того, как < 5 секунд я получаю execption:

Warnung: Cannot serialize session attribute pageServiceBean for session 143CD5DE1C101E6A30515C585C32C02B 
    java.io.NotSerializableException: com.mongodb.DBApiLayer 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183) 
     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) 
     at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1671) 
     at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077) 
     at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:432) 
     at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353) 
     at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:518) 
     at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
     at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5622) 
     at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
     at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3947) 
     at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426) 
     at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345) 
     at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
     at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
     at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
     at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
     at java.lang.Thread.run(Thread.java:744) 
... 
Schwerwiegend: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.mongodb.DBApiLayer 
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.mongodb.DBApiLayer 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) 
    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595) 
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060) 
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284) 
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:204) 
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3954) 
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.io.NotSerializableException: com.mongodb.DBApiLayer 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) 
    at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1671) 
    at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077) 
    at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:432) 
    at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353) 
    at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:518) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5622) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3947) 
    ... 7 more 

Я использую MongoDB как база данных. Но в этом случае я пишу в файл свойств, а не в базу данных. Поэтому я не знаю, почему я получаю ошибку java.io.NotSerializableException: com.mongodb.DBApiLayer.

И свойств в файлах нет, как только я открою файл за исключением.

Любая идея?

ответ

0

Я решил проблему. Я не могу писать в файле свойств в пути к классу, потому что в пути к классам он является частью военного файла на сервере. И после того, как я напишу, данные уже несовместимы. Таким образом, вы получаете ошибку. Решение состоит в том, чтобы вытащить файл свойств из вашего пути к классам. Я использовал FileOutputStream для записи в файл myttyty и использовал eclipse HOME PATH как путь. Это хорошее решение, или я должен использовать отличный способ писать в файле propertie?

Смежные вопросы