标签: system-properties

更改user.home系统属性

如何从我的java程序外部更改user.home系统属性,以便它认为它与D:\ Documents and Settings \%USERNAME%不同?通过环境变量或VM参数?

java system-properties

24
推荐指数
2
解决办法
4万
查看次数

众包通用Java系统属性和已知值的完整列表

我受到另一个问题的启发:使用Java系统属性的最佳实践

我目前正在寻找Java系统属性和可能值的完整列表.我正在研究一个简单的类来简化它们的使用(如果你有兴趣,请获取源背景信息(我的博客)).在这个课程中,我尝试提供以下内容:

  • 对Java系统属性的简单一致访问(无String常量)
  • 完整的可用属性文档及其可能的值 - 在我的IDE中(即自动完成,内联Javadoc)
  • 修复返回值和/或命名的不一致性
  • 确保java.io.tmpdir存在 - 实际上这是我做这一切的主要原因:)

要获得完整的文档和可用属性的完整列表(即使可用性严重依赖于JVM的那些),我希望您下载源代码,运行它并发布结果.我会相应地更新课程,并在指定地点保持可用.希望它会让你们中的一些人放松一下:)

编辑:

我不是在寻找System.getProperties()所描述的标准属性,也不是我系统上可用的所有属性.我正在尝试创建一个完整的系统属性列表 - 甚至是那些与供应商,jvm或版本相关的属性 - 那些不保证存在且文档稀疏或难以找到的属性.属性如

  • sun.desktop(仅限Linux,例如"gnome"),
  • awt.toolkit(仅限Mac,例如apple.awt.CToolkit)
  • sun.cpu.endian(仅限Sun JVM)
  • ...

我希望让其他人运行我的代码并发布他们的结果,以便以易于使用的Java枚举的形式编译一个全面的列表(包含属性及其可能值的大量文档),例如:

String file = SystemProperty.JAVA_IO_TMPDIR + "file.txt";
Run Code Online (Sandbox Code Playgroud)

代替

String tmp = System.getProperty("java.io.tmpdir");
if (!tmp.endsWith(File.separator)
    tmp += File.separator;
new File(tmp).mkdirs(); // make sure tmp exists
String file = tmp + "file.txt";
Run Code Online (Sandbox Code Playgroud)

所以请运行该代码并发布您的发现.这是一个简单的脚本,可以帮助您入门:

#!/bin/bash
# download and run
# you should really look at the code first, as you can't …
Run Code Online (Sandbox Code Playgroud)

java properties crowdsourcing system-properties

23
推荐指数
2
解决办法
8887
查看次数

为JUnit Runner(Eclipse)设置系统属性以测试Spring Web App

我们的Web应用程序使用SystemPropertyPlaceholder根据系统属性的值加载属性文件(参见下文)

在本地运行它的默认设置存储在application.properties.在生产服务器上,我们目前只是在部署应用程序之前将"env"设置为"production",它将加载production.properties.

现在,为了测试应用程序,test.properties应该使用一个文件.

如果我在我们的jenkins构建中运行所有测试,则添加-Denv=test将按预期工作.但是,如果我只想在Eclipse中使用集成的JUnit运行器运行单个测试呢?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = WebContextLoader.class, locations = {"classpath:application-context.xml" })
public class SomeTest {
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉我的测试它应该在Spring加载之前将系统属性"env"设置为"test"?因为using MethodInvokingFactoryBean只会出于某种原因设置它,即使我在加载属性文件之前设置它:

<bean id="systemPrereqs"
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject" value="#{@systemProperties}" />
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <!-- The new Properties -->
        <util:properties>
            <prop key="env">test</prop>
        </util:properties>
    </property>
</bean>

<bean
    class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="searchContextAttributes" value="true" />
    <property name="contextOverride" value="true" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="locations">
        <list>
            <value>classpath:application.properties</value>
            <value>classpath:${env}.properties</value>
            <value>${config}</value>
        </list>
    </property>
</bean>

<bean id="managerDataSource" …
Run Code Online (Sandbox Code Playgroud)

java eclipse junit spring system-properties

20
推荐指数
2
解决办法
4万
查看次数

如果我在调用JVM时多次指定一个System属性使用哪个值?

如果我在调用JVM时多次指定系统属性,当我检索属性时,我将实际得到哪个值?例如

java -Dprop=A -Dprop=B -jar my.jar
Run Code Online (Sandbox Code Playgroud)

我打电话的结果是什么System.getProperty("prop");

关于这个的Java文档并没有真正告诉我这方面有用的东西.

在我对运行不同JVM的几台机器进行的非科学测试中,似乎最后一个值是返回的值(这实际上是我需要的行为)但是我想知道这种行为是否在任何地方正式定义,或者它是否可以在JVM之间变化?

java jvm system-properties

19
推荐指数
2
解决办法
8922
查看次数

Jetty - 设置系统属性

我在Jetty上运行webapp.应用程序的配置来自运行Jetty的同一服务器上的文件.在应用程序内部,我依靠系统属性来获取文件的路径,以便我可以解析它.例如

final String loc = System.getProperty(FACTORY);
Run Code Online (Sandbox Code Playgroud)

现在我可以使用D开关启动jetty以$FACTORY在命令行上提供但是如果可以的话我宁愿把它放在jetty.xml中.我知道有<SystemProperty />标签,但似乎只提供<Set/>标签已存在的系统值.有人可以举例说明如何实现这一目标吗?(如果可以实现)

configuration jetty system-properties

17
推荐指数
3
解决办法
3万
查看次数

可以在Java应用程序中检测系统代理设置,但不能在JUnit中检测

  • Windows 7的
  • Java 1.8.0_45
  • Eclipse火星

如果您将系统代理设置为HTTP,则HTTP仅当从mainjava应用程序的方法运行时,才会打印以下内容.

但是,如果从JUnit 4测试(在eclipse中)调用它,它总是打印DIRECT.

还注意到-Djava.net.useSystemProxies=true在eclipse 中定义:运行配置 - >参数 - > VM参数.测试只是挂起.

知道发生了什么事吗?

非常感谢,

public void printSystemProxy() {
    System.setProperty("java.net.useSystemProxies", "true");
    try {
        final List<Proxy> list = ProxySelector.getDefault().select(new URI("http://foo/bar"));
        for (final Proxy proxy : list) {
            System.out.println(proxy.type());
        }
    } 
    catch (final URISyntaxException e) {
        throw new IllegalStateException(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

java eclipse proxy junit system-properties

16
推荐指数
1
解决办法
3726
查看次数

在Java中将System propery设置为Null

在我的单元测试中,我需要将"workingDir"系统属性设置为Null.

但我不能这样做,因为它给了我NullPointerException:

System.setProperty("workingDir", null);
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

java system-properties

14
推荐指数
2
解决办法
9993
查看次数

如何检测文件系统是否区分大小写?

我有一个List<String>文件夹中的文件名和一个特定的文件名String.我想检测文件名是否在列表中,但是需要尊重底层文件系统是否区分大小写的属性.

有没有简单的方法来做到这一点(除了检查的"黑客" System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1)?;-)

java filesystems case-sensitive system-properties

13
推荐指数
1
解决办法
4974
查看次数

使用ant设置系统属性

我有一个蚂蚁脚本,它有一个taskdef和任务创建一个https互联网连接,并且有一些SSL的东西是错误的.因此,我想设置系统属性javax.net.debug=all以获取更多信息.

在java中我会使用该-D选项执行此操作,但在ant中,这用于与系统属性不同的ant属性.

如果这不是一个taskdef而是一个java任务,我可以使用该sysproperty属性,但它不是 - java任务.

谷歌搜索这是令人沮丧的复杂,因为蚂蚁的蚂蚁属性和系统属性非常相似,大多数搜索结果都是关于另一个(或关于java-task).

显然我并不是唯一一个有这个问题的人,但是我发现的其他人的问题(比如这里)没有得到答复或者去了黑客(就像这里).

ant system-properties

12
推荐指数
1
解决办法
1万
查看次数

如何在sbt中为我的项目设置系统属性?

我敢肯定,我的思念很简单的东西......我想设置系统属性java.awt.headlesstrue为我的SBT项目.阅读关于属性页面我认为我需要使用systemsystemOptional.在我的项目文件中,我尝试过以下内容:

lazy val javaAwtHeadless = system[Boolean]("java.awt.headless")
Run Code Online (Sandbox Code Playgroud)

将其设置为用户属性(例如lazy val javaAwtHeadless = property[Boolean])并设置附带的值build.properties使得属性在sbt控制台中可见,但不在sbt的Scala控制台(via System.getProperty("java.awt.headless"))中.

set java.awt.headless true 从sbt控制台工作,包括在Scala控制台中设置,但它不会持续到下次我启动sbt.

scala project system-properties sbt

11
推荐指数
3
解决办法
1万
查看次数