2017-03-19 29 views
1

我正嘗試讀取Akka中的外部conf/property文件。 我指的是post

我只有一個配置,我需要在myappConfiguration.properties中添加更多屬性。我可以看到屬性文件能夠加載但無法讀取配置。

myappConfiguration.properties內容如下。

myconf { 
    directory : "D:\\Git\\Java_Test_WS\\file.reader\\" 
} 

我越來越波瀾異常,異常明顯地告訴一些類型的問題,但我不明白我應該寫什麼。

Exception in thread "main" com.typesafe.config.ConfigException$WrongType: myappConfiguration.properties: myconf has type STRING rather than OBJECT 
    at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:159) 
    at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:145) 
    at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:172) 
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:184) 
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:189) 
    at com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:258) 
    at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:264) 
    at com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:37) 
    at com.myapp.file.reader.AkkaBaseEventReader.main(AkkaBaseEventReader.java:27) 

下面是我嘗試讀取該配置條目的Java代碼。而我得到異常的行號27碼:

Config config = system.settings().config().getConfig("myconf.directory"); 

完整代碼:

public class AkkaBaseEventReader implements ApplicationConstant { 

    public static void main(String[] args) throws IOException { 

     System.setProperty("config.file","myappConfiguration.properties"); 

     ActorSystem system = ActorSystemImpl.create("FileReaderForassignment"); 
     final ActorRef reader = system.actorOf(EventScannerActor.props(),"FileReader"); 

     System.out.println(system.settings()); 

     Config config = system.settings().config().getConfig("myconf.directory");  

    } 
} 

下面是我的pom.xml,會告訴我使用的是什麼版本阿卡:

<properties> 
     <akka.version>2.4.9</akka.version> 
     <maven-dependency-plugin.version>3.0.0</maven-dependency-plugin.version> 
     <maven.compiler.plugin>3.6.1</maven.compiler.plugin> 
     <java.compiler.target>1.8</java.compiler.target> 
     <java.compiler.source>1.8</java.compiler.source> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-actor_2.11</artifactId> 
      <version>${akka.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-http-core_2.11</artifactId> 
      <version>${akka.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-http-experimental_2.11</artifactId> 
      <version>${akka.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-http-jackson-experimental_2.11</artifactId> 
      <version>${akka.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>${maven-dependency-plugin.version}</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <!-- This will download source so easy to see API and java doc. --> 
       <artifactId>maven-source-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>attach-sources</id> 
         <phase>verify</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <!-- Java 8 compiler plugin --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven.compiler.plugin}</version> 
       <configuration> 
        <source>${java.compiler.source}</source> 
        <target>${java.compiler.target}</target> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
</project> 

在此先感謝您提供任何形式的幫助和信息。

回答

2

根據您的配置目錄中的值是一個String而不是另一個Config對象:

myconf { 
    directory : "D:\\Git\\Java_Test_WS\\file.reader\\" 
} 

要獲取的值作爲String你應該做的:

Config config = system.settings().config().getString("myconf.directory"); 
相關問題