为了进行记录,我在运行Java程序时将Java版本写入日志中。
我发现我可以用
System.getProperty("java.runtime.version") -> 1.8.0_202-b08
Run Code Online (Sandbox Code Playgroud)
和
System.getProperty("java.version") -> 1.8.0_202
Run Code Online (Sandbox Code Playgroud)
结果显然在其他地方缺少“构建”信息,但是除了结果之外还有其他区别吗?在某些情况下,我应该使用第一个选项而不是第二个选项?
我正在使用Maven 3.0.3和JUnit 4.8.1.在我的JUnit测试中,如何读取我的Maven pom.xml文件中定义的project.artifactId?在我的pom中,我有
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myco.pplus2</groupId>
<artifactId>pplus2</artifactId>
Run Code Online (Sandbox Code Playgroud)
但是这在我的JUnit测试中不起作用来设置工件ID ...
@Before
public void setUp() {
...
System.out.println( "artifactId:" + System.getProperty("project.build.sourceEncoding") );
} // setUp
Run Code Online (Sandbox Code Playgroud)
以上输出"artifactId:null".无论如何,感谢任何帮助, - 戴夫
我想知道以下哪一种是首选方法?
我们可以设置为APP_HOME=/path/to/file
(export
在.profile
这些行中或某些行),并将其作为System.getenv("APP_HOME")
或者,或者使用属性作为-DAPP_HOME=/path/to/file
和访问它System.getProperty("APP_HOME")
现在..任何一个都将使值可用于应用程序的立场,但是这两种方法是否优先?为什么?什么时候?
这篇好文章向我们展示了如何将所有当前系统属性打印到STDOUT,但我需要将所有内容转换System.getProperties()
为a HashMap<String,String>
.
因此,如果有一个名为"baconator"的系统属性,其值为"yes!",我设置System.setProperty("baconator, "yes!")
,那么我希望HashMap
有一个键baconator
和一个相应的值yes!
,等等.所有系统属性的相同想法.
我试过这个:
Properties systemProperties = System.getProperties();
for(String propertyName : systemProperties.keySet())
;
Run Code Online (Sandbox Code Playgroud)
但后来得到一个错误:
类型不匹配:无法从元素类型Object转换为String
那么我试过:
Properties systemProperties = System.getProperties();
for(String propertyName : (String)systemProperties.keySet())
;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
只能遍历数组或java.lang.Iterable的实例
有任何想法吗?
我正在开发一个发出HTTP请求的Java应用程序,我开发时间的一半是在代理之后.所以我的代码中有以下块:
if (BEHIND_PROXY) {
java.util.Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", PROXY_HOST);
systemProperties.setProperty("http.proxyPort", PROXY_PORT);
}
Run Code Online (Sandbox Code Playgroud)
我的想法是根据我的位置改变价值BEHIND_PROXY
.我今天的工作,不是一个代理之后,忘了设置BEHIND_PROXY
到false
.但是,连接仍然成功,我的应用程序收到了它请求的数据.这怎么可能?是否有内置的东西,如果无法访问代理服务器,它只是再次尝试但在此重试时绕过代理?
第二个问题,我一直试图找到一个完整的系统属性列表.我发现有很多帖子像这一个,但他们没有一个人列出http.proxyHost
或http.proxyPort
,这让我觉得他们显然不是很完整.我不知何故错了?这些http.x
属性属于这些其他列表吗?某处有更完整的清单吗?
我有一个gradle任务,使用curl将一些东西部署到bintray.
为此,它需要我的bintray api密钥.我不想把它放在我的构建脚本(或属性文件)中,因为所有这些东西都是在github上的明显托管.
相反,我让任务使用了一个名为的属性bintrayApikey
,该属性在调用gradle时提供.当我在本地运行时使用
gradlew pushToBintray -DbintrayApikey=<my api key>
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.
所以下一步是让我的Jenkins在cloudbees上完成这项工作.由于似乎没有一个特殊的地方来放置系统属性我只是将它们添加到任务中,但这似乎不起作用.在控制台中,我可以看到它正在访问bintray,但随后完成:
This resource requires authentication
Run Code Online (Sandbox Code Playgroud)
那么如何在我的jenkins作业配置中提供属性值?
我需要与我的应用程序中的两个Web服务进行通信.对于一个web服务,我需要使用soap1_1版本,而另一个soap版本是soap1_2.在这种情况下,应该为系统属性"javax.xml.soap.MessageFactory"设置的值是什么
客户1:
public class SoapClient1 {
protected static Logger _logger = Logger.getLogger ("TEST");
private static Long retryDelay = null;
public String sendSoapMessage (String xml) throws Exception {
SOAPMessage resp = null;
String response = null;
String endpoint = "http:xxxx";
System.setProperty("javax.xml.soap.MessageFactory","com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl");
SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = connectionFactory.createConnection();
long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
//URL endPoint = new URL(endpoint);
//setting connection time out and read timeout
URL endPoint = new URL (null, endpoint, new URLStreamHandler () {
@Override …
Run Code Online (Sandbox Code Playgroud) 我使用sys/system_properties.h中的__system_property_get()来获取系统属性.我正在尝试使用r10c ndk,因为我需要arm64工具链.
__system_property_get()在libc.so中定义.下面是armv5/armv7a的libc.so的readelf输出.
readelf -Ws libc.so | grep property_get
194: 00009100 20 FUNC GLOBAL DEFAULT 4 __system_property_get
198: 00009100 20 FUNC GLOBAL DEFAULT 4 __system_property_get
Run Code Online (Sandbox Code Playgroud)
但是,看起来已经删除了arm64版本!我收到一个链接器错误,说它没有定义.我分析了arm64的所有共享库,但没有一个具有该符号.
是否有替代API来获取本机代码中的系统属性?
谢谢!
有没有一种简单的方法,使用Java Swing,在我的工作站上显示Java系统属性名称和值?
基本上,我正在寻找的是一个Java Swing应用程序,它显示如下:
java ×7
android ×1
android-ndk ×1
arm64 ×1
bintray ×1
gradle ×1
hashmap ×1
java-home ×1
jenkins ×1
junit ×1
maven ×1
properties ×1
proxy ×1
soap-client ×1
swing ×1
web-services ×1