2009-09-24 61 views

回答

6

不,不可能自動從文件加載系統屬性。你可以做的是有某種啓動器讀取文件並自動將其「轉換」爲-D命令行選項。

的Java Webstart的做類似的東西,隨着JNLP file定義系統屬性 - 也許你可以使用它。

3

如果您正在使用Maven來打包應用程序,請考慮使用appassembler - Maven的插件的generate-daemons目標。這將爲Windows和Linux生成基於JSW的守護程序包裝器。因此,用於啓動應用程序的bat/sh文件將定義這些屬性,同時仍允許您通過命令行指定其他屬性。

您可以在執行指定defaultJVMSettings屬性,以使JVM將與這些特性推出。下面的例子顯示瞭如何定義這些設置:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>appassembler-maven-plugin</artifactId> 
    <version>1.0</version> 
    <execution> 
    <id>generate-jsw-scripts</id> 
    <phase>package</phase> 
    <goals> 
     <goal>generate-daemons</goal> 
    </goals> 
    <configuration> 
     <defaultJvmSettings> 
     <initialMemorySize>256M</initialMemorySize> 
     <maxMemorySize>1024M</maxMemorySize> 
     <systemProperties> 
      <systemProperty>java.security.policy=conf/policy.all</systemProperty> 
      <systemProperty>com.sun.management.jmxremote</systemProperty> 
      <systemProperty>com.sun.management.jmxremote.port=8999</systemProperty> 
      <systemProperty> 
      com.sun.management.jmxremote.authenticate=false 
      </systemProperty> 
      <systemProperty>com.sun.management.jmxremote.ssl=false</systemProperty> 
     </systemProperties> 
     <extraArguments> 
      <extraArgument>-server</extraArgument> 
     </extraArguments> 
     </defaultJvmSettings> 
     <daemons> 
     <daemon> 
      <id>myApp</id> 
      <mainClass>name.seller.rich.MainClass</mainClass> 
      <commandLineArguments> 
      <commandLineArgument>start</commandLineArgument> 
      </commandLineArguments> 
      <platforms> 
      <platform>windows</platform> 
      <platform>unix</platform> 
      </platforms> 
     </daemon> 
     </daemons> 
     <target>${project.build.directory}/appassembler</target> 
    </configuration> 
    </execution> 
</plugin> 
+0

這是一個獨立的應用程序的一個很好的解決方案,但在我的情況下,我有一個庫。我想以某種方式將屬性與這個lib捆綁在一起,每次使用它時都會設置捆綁的屬性。所以基本上我必須在源代碼中完成它。 – desolat 2009-09-25 10:19:38

+0

今天我學到了一些新東西。感謝您的迴應。 – 2016-08-17 15:56:16

相關問題