如何从Java任务设置Java库路径?

Geo*_*Geo 11 java ant

是否可以在java任务中指定库路径?像相当于:

java -Djava.library.path=somedir Whatever

Von*_*onC 15

<propertyset><syspropertyset>应该是你在找什么

例如,请参阅此线程.


您可以在java ant任务中逐个设置它们:

<sysproperty key="test.classes.dir" 
             value="${build.classes.dir}"/> 
Run Code Online (Sandbox Code Playgroud)

乏味...或者你可以将它们作为一组Ant属性传递下去:

<syspropertyset> 
    <propertyref prefix="test."/> 
</syspropertyset> 
Run Code Online (Sandbox Code Playgroud)

您可以引用外部系统属性:

<propertyset id="proxy.settings"> 
    <propertyref prefix="http."/> 
    <propertyref prefix="https."/> 
    <propertyref prefix="socks."/> 
</propertyset> 
Run Code Online (Sandbox Code Playgroud)

然后在你的java ant任务中使用它们:这propertyset可以按需使用; 传递给新进程时,传递与给定前缀匹配的所有当前ant属性:

<java>
     <!--copy all proxy settings from the running JVM--> 
     <syspropertyset refid="proxy.settings"/> 
     ...
</java>
Run Code Online (Sandbox Code Playgroud)

我完全错过了你试图通过java.library.path财产的事实!
正如这个帖子中提到的:

如果你试图在java任务之外设置它的值,Ant会忽略它.所以我把除了那个之外的所有属性放在我的syspropertyset中,它按预期工作.

含义:

<property name="java.library.path" location="${dist}"/>

<propertyset id="java.props">
    <propertyref name="java.library.path"/>
</propertyset>

<target name="debug">
    <java>
        <syspropertyset refid="java.props"/>
    </java>
</target>
Run Code Online (Sandbox Code Playgroud)

不起作用,但以下应该:

<target name="debug">
    <java>
        <sysproperty key="java.library.path" path="${dist}"/>
    </java>
</target>
Run Code Online (Sandbox Code Playgroud)

(虽然你可以尝试将" fork"属性设置为true,如果它不起作用)
(注意:你不能修改它的值)