2015-12-21 85 views
3

我正在使用批处理文件来调用GUI。这个图形用户界面有一个按钮(B1),点击后可以调用它自己的副本。现在我想要增加GUI的优先级,无论是从批处理还是按钮B1运行。如何使用ProcessBuilder高优先级运行java程序?

随着批次,我能够增加它的优先权,但不能与B1。

下面的代码执行按钮B1的点击:(我使用cmd以提高优先级,我不知道是否有任何其他方式)

final ProcessBuilder processBuilder = new ProcessBuilder("cmd", 
    " /C", 
    " start /high", 
    path, 
    "-DTESTKERNEL_PROPERTIES=" + tempFile.getCanonicalPath(), 
    "-Djava.util.logging.config.file=" + loggingFile, 
    "-Djava.library.path=" + libraryPath, 
    "-cp", 
    classpath, 
    "com.abc.cde.gui.typetwo.GuiTypeTwo"); 
processBuilder.directory(new File(System.getProperty("user.dir"))); 

DTESTKERNEL_PROPERTIES是一个属性文件,是执行代码所需的。

这是输出列表:

cmd, 
/C, 
start, 
/high, 
D:\jdk\jre\bin\javaw, 
-DTESTKERNEL_PROPERTIES=C:\Users\test\AppData\Local\Temp\testkernel2667928753863437728.properties, 
-Djava.util.logging.config.file=../config/logging.properties, 
-Djava.library.path=D:\TestKernalMain\lib, 
-cp, 
D:\Workspace\TestKernalMain\bin; 
D:\TestKernalMain\lib\bundled\bsh-2.0b5.jar; 
D:\TestKernalMain\lib\bundled\commons-cli-1.2.jar; 
D:\TestKernalMain\lib\bundled\commons-collections-3.2.1.jar; 
D:\TestKernalMain\lib\bundled\commons-configuration-1.8.jar; 
D:\TestKernalMain\lib\bundled\commons-io-2.0.jar; 
D:\TestKernalMain\lib\bundled\commons-lang-2.5.jar; 
D:\TestKernalMain\lib\bundled\commons-logging-1.1.1.jar; 
D:\TestKernalMain\lib\bundled\commons-net-2.2.jar; 
D:\TestKernalMain\lib\bundled\commons-vfs2-2.0.jar; 
D:\TestKernalMain\lib\bundled\eventbus-1.4.jar; 
D:\TestKernalMain\lib\bundled\javasimon-core-2.3.0.jar; 
D:\TestKernalMain\lib\bundled\javasimon-jmx-2.3.0.jar; 
D:\TestKernalMain\lib\bundled\jpcsc.jar; 
D:\TestKernalMain\tools\ant\ant-antlr.jar; 
D:\TestKernalMain\tools\ant\ant-apache-bcel.jar; 
D:\TestKernalMain\tools\ant\ant-apache-bsf.jar; 
D:\TestKernalMain\tools\ant\ant-apache-log4j.jar; 
D:\TestKernalMain\tools\ant\ant-apache-oro.jar; 
D:\TestKernalMain\tools\ant\ant-apache-regexp.jar; 
D:\TestKernalMain\tools\ant\ant-apache-resolver.jar; 
D:\TestKernalMain\tools\ant\ant-apache-xalan2.jar; 
D:\TestKernalMain\tools\ant\ant-commons-logging.jar; 
D:\TestKernalMain\tools\ant\ant-commons-net.jar; 
D:\TestKernalMain\tools\ant\ant-contrib.jar; 
D:\TestKernalMain\tools\ant\ant-jai.jar; 
D:\TestKernalMain\tools\ant\ant-javamail.jar; 
D:\TestKernalMain\tools\ant\ant-jdepend.jar; 
D:\TestKernalMain\tools\ant\ant-jmf.jar; 
D:\TestKernalMain\tools\ant\ant-jsch.jar; 
D:\TestKernalMain\tools\ant\ant-junit.jar; 
D:\TestKernalMain\tools\ant\ant-junit4.jar; 
D:\TestKernalMain\tools\ant\ant-launcher.jar; 
D:\TestKernalMain\tools\ant\ant-netrexx.jar; 
D:\TestKernalMain\tools\ant\ant-swing.jar; 
D:\TestKernalMain\tools\ant\ant-testutil.jar; 
D:\TestKernalMain\tools\ant\ant.jar; 
D:\TestKernalMain\tools\cardreader\javactapi.jar; 
D:\TestKernalMain\tools\iText\iText-2.1.7.jar; 
D:\TestKernalMain\tools\iText\iText-rtf-2.1.7.jar; 
D:\TestKernalMain\tools\jdiff\antjdiff.jar; 
D:\TestKernalMain\tools\jdiff\jdiff.jar; 
D:\TestKernalMain\tools\jdiff\xerces.jar; 
D:\TestKernalMain\tools\JUnit\junit.jar; 
D:\TestKernalMain\tests\lib\cglib-nodep-2.2.2.jar; 
D:\TestKernalMain\tests\lib\easymock-3.0.jar; 
D:\TestKernalMain\tests\lib\jetm-1.2.3.jar; 
D:\TestKernalMain\tests\lib\jetm-optional-1.2.3.jar; 
D:\TestKernalMain\tests\lib\obj-1.2.jar; 
D:\Workspace\GUITypeTwo\bin; 
D:\TestKernalMain\lib\TestKernel.jar; 
D:\GUITypeTwo\lib\external\docking-frames-core.jar; 
D:\GUITypeTwo\lib\external\docking-frames-common.jar; 
D:\GUITypeTwo\lib\external\glasslib.jar; 
D:\GUITypeTwo\lib\external\docking-frames-ext-glass.jar; 
D:\GUITypeTwo\lib\external\h2-1.3.167.jar; 
D:\GUITypeTwo\lib\external\mydoggy-api.jar; 
D:\GUITypeTwo\lib\external\mydoggy-plaf.jar; 
D:\GUITypeTwo\lib\external\mydoggy-res.jar; 
D:\GUITypeTwo\lib\external\swingx-core-1.6.2.jar; 
D:\GUITypeTwo\lib\external\TableLayout.jar; 
D:\GUITypeTwo\lib\external\ValidationAPI.jar; 
D:\GUITypeTwo\tools\MPlus.jar; 
D:\GUITypeTwo\tools\JUnit\junit-4.9.jar; 
D:\TestKernalMain\config, 
com.gui.typetwo.GuiTypeTwo 

回答

1

/Cstart之前删除空格和分裂"start /high"成两个独立的参数:

new ProcessBuilder("cmd", "/C", "start", "/high", ...) 
+0

它说: “Windows无法找到-DTESTKERNEL_PROPERTIES =”我交叉检查,发现文件存在于所需位置 –

+0

'path'的值是什么?你能首先把所有的过程参数放在一个列表中,打印出来,在原始问题中发布输出,然后调用'新的ProcessBuilder(list)'?那里肯定有一些错字或其他小问题。 –

+0

参数有适当的值,我试图使用列表来代替。给出相同的结果。 “Windows找不到.......” –