设置的任何系统属性-Dkey=value都可以使用String检索System.getProperty("key").但您也可以获得某些特定类型的系统属性,例如:
Boolean.getBoolean("key"); //Returns true if value==true
Integer.getInteger("key"); //Returns value if exists & is number, else null
Long.getLong("key"); //Ditto as for Integer
有没有其他类的static getSomeClass(String systemPropertyKey)方法?为什么不Byte,Float或Double拥有它们,但其他原始包装器(或可能是什么原因)?
请注意:虽然我在这里提到了Swing和MacOS,但这个问题与它们中的任何一个都没有关系:我只是将它们作为我正在尝试做的具体例子.
我正在尝试以常规的方式设置系统属性.如果您在Mac上开发Swing应用程序,通常的做法是设置以下系统属性,以便您的Swing应用程序菜单看起来与典型的Mac应用程序相同:
System.setProperty("apple.laf.useScreenMenuBar", "true")
当我在我的main方法中调用它时,它具有所需的效果(菜单栏被拉出JFrame并被固定在屏幕顶部).
但是当我去试着让那个叫做groovier的时候:
System.properties['apple.laf.useScreenMenuBar', 'true']
它不起作用.没有例外,它只是停止工作并且在UI中没有所需的效果.为什么,我该怎么做才能解决它?
我正在看书Spring In Action,有一个例子:
public BlankDisc(@Value("#{systemProperties['disc.title']}" String title){
}
但是systemProperties这里是什么以及在哪里声明它?我认为它是application.properties文件并添加到disc.title=Beatles那里。但是title变量的值是null在创建 bean 时。顺便说一下,我可以注入disc.titleif 我使用的值@Value("${disc.title}")。
我碰到一个处理文件名的问题的javax.mail,而且有些方面需要通过会话属性,并通过一些系统属性进行配置。许多类javax.mail似乎将它们处理的属性存储在静态字段中,如下例所示MimeBodyPart:
private static final boolean encodeFileName =
PropUtil.getBooleanSystemProperty("mail.mime.encodefilename", false);
根据我的理解,这将系统属性的具体值绑定到某个具体类加载器中的类的生命周期。谁先加载那个类,是唯一能够影响值的人。这正是发生在我身上的事情:
我知道我需要设置一些特定的系统属性来影响文件名处理,并在我处理文件名的地方这样做,为了文档目的等,为了使事情尽可能地靠近。但出于某种原因,以前的代码加载了类更早的兴趣,将错误的值绑定到静态字段。改变这一点的唯一方法是将我的值设置到调用层次结构中较早的位置,但我花了一些时间才注意到静态字段的事情。
这对我来说似乎是一个糟糕的策略,因为我无法轻易知道与我共享同一个类加载器的代码使用了我所做的相同类。理论上,这将迫使我在已经启动 JVM 时设置我的系统属性,使我的代码的实现细节成为各种不同情况下的管理细节。如果完全使用系统属性而不是 session-once,我会期望它们像 session-once 一样被实时查询。否则在某些情况和用例下更改相应设置是不必要的困难。
OTOH,当前的方法可能只是有一些我不知道的好处,比如查询系统属性非常昂贵。
那么,做MimeBodyPart上述事情的充分理由是什么?
这两个系统属性存储在哪里?
电话:THL W8s 只读:W8s.JB2.FHD.EN.COM.16P256_MT6589TV1.0.3_20130815
本ro.boot.serialno应该是多变的一些恢复和从那里将正在添加ro.serialno和值在显示:设置- >关于确认电话- >状态- >序号。
(我用Sp flash tool按格式按钮丢失了原始序列号)
编辑:
/system/build.prop 
没有这个键也没有他的价值观,它以:
# begin build properties
# autogenerated by buildinfo.sh
shell configuration android administration system-properties
允许我的Dart Web应用程序根据其部署的环境来命中不同的服务器会很不错:
http://dev.myapp.com/someServicehttp://testing.myapp.com/someServicehttp://myapp.com/someService在Java中,通常你有一个部署描述符(myapp.properties),应用程序读取运行时类路径,允许你myapp.properties像这样指定一个DEV:
service.url=dev.myapp.com/someService
和QA一样:
service.url=qa.myapp/com/someService
看起来Dart提供的东西可以比较, 但只有服务器端/命令行...
那么Dart Web开发人员如何实现同样的目标,您不需要将所有各种环境的服务器硬编码到应用程序中?(显然,这个问题超出了服务URL,并且真正适用于任何特定于环境的属性.)
web-applications environment-variables deployment-descriptor system-properties dart
Play框架使用
activator test
运行所有测试.
如何将Java System属性传递给我的测试用例.以下方法无效
activator -Dsettings="/settings/settings.json" test
巧合的是,如果我使用~run命令,上述内容将起作用.
我已经阅读过这个问题了,但它只适用于该play
命令
在读取java man页面时,我发现了-Dproperty=value通过传递此标志的stats标志,它将创建一个value = value的系统属性.我写了一个测试java代码:
class File{
    public static void main(String[] args){
        System.out.println("HOLA");
        System.out.println(System.getProperty("blah"));
    }
}
我编译相同,javac File.java然后使用命令运行,java File -Dblah=blah但我得到以下输出
HOLA
null
然后我用as跑了java -Dblah=blah File然后我得到了预期的输出:
HOLA
blah
问题是:这是一个错误还是一个故意的行为.这似乎是一个错误,因为在大多数程序中,命令行无关紧要.
假设我想从命令行运行一个java程序,我使用这个命令:
myExes\java\java.exe AJavaProgram
如您所见,java.exe 不在我的路径中,因此我手动运行它,而不是简单地使用命令java AJavaProgram。
我希望程序返回/打印命令中的第一个条目,在本例中,该条目是myExes\java. (在末尾包含 java.exe 也可以)。
有没有办法做到这一点?
最初,我认为这很简单。args[0] 将返回路径,但事实并非如此。
我试图在我的jetty配置中使用系统属性如下:
<SystemProperty name="jetty.home" default="" />/etc/jetty7/context
但是jetty.home总是返回空的.我如何设置此变量并将其指向哪里?
我需要这个用于上下文路径.
我的码头主文件夹是D:\ Developer Tools\jetty-6.1.26.是否需要指向此文件夹?如果是这样,我该怎么做?我需要使用Windows全局变量吗?
我正在使用org.mortbay.jetty中的org.eclipse.jetty.xml.XmlConfiguration类.