Articles of Java的

Java线程优先级不起作用

这是一个关于线程优先级的testing。 代码来自Thinking in Java p.809 import java.util.concurrent.*; public class SimplePriorities implements Runnable { private int countDown = 5; private volatile double d; // No optimization private int priority; public SimplePriorities(int priority) { this.priority = priority; } public String toString() { return Thread.currentThread() + ": " + countDown; } public void run() { Thread.currentThread().setPriority(priority); while (true) […]

如何获得Java中的所有窗口句柄的列表(使用JNA)?

我是JNA的新手。 我正试图得到包括最小化的所有窗口句柄。 我需要所有窗口的HWND 。 我经历了Windows的问题:如何获得所有可见窗口的列表? 这帮助我得到了Windows的列表,但它有hWndtypes为int。 我不能用com.sun.jna.platform.win32.User32函数来请求com.sun.jna.platform.win32.WinDef.HWNDtypes的hWnd 。 所以,有没有办法得到所有types的com.sun.jna.platform.win32.WinDef.HWND而不是int指针的窗口句柄? 最后,为什么int和HWND的区别? 它如何接受? 我有点困惑。 谢谢。 我有下面的代码(从Hovercreft的答案编辑): import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.platform.win32.WinDef.RECT; import com.sun.jna.platform.win32.WinUser.WNDENUMPROC; public class TryWithHWND { public static void main(String[] args) { final User32 user32 = User32.INSTANCE; user32.EnumWindows(new WNDENUMPROC() { int count = 0; public boolean callback(HWND hWnd, Pointer arg1) { […]

Java Attach API:dynamic改变java.library.path

在Windows机器上使用com.sun.tools.attach API时,在拨打电话时出现以下错误 VirtualMachine.list() java.lang.UnsatisfiedLinkError:在java.library.path中不附加 原因是缺lessattach.dll。 attach.dll位于$JRE/bin/ 。 当用-Djava.library.path=[Directory to the attach.dll]启动我的Java程序时,所有内容都可以正常运行,不会出现错误输出。 现在,我不想添加每个Java程序启动这个丑陋的JVM参数。 所以我的问题是: 我的机器没有正确configuration, $JRE/bin/应该在库path中吗? 如果不是,我该如何dynamic添加path? System.setProperties("java.library.path",StringOfThePathToTheAttach.dll); 不行。 库的path被改变了,但是无论如何,这个错误也是出现的。 有这个事情与SecurityManager或JVM启动?

使用Runtime.exec / ProcessBuilder.start以低优先级启动Java进程?

我正在尝试使用ProcessBuilder类通过Java启动一个外部过程,而这一点很有效。 目前使用该命令运行: new ProcessBuilder("java", "-jar", jarfile, args); 我想要做的就是这一点,但是要以低优先级开始这个过程。 我的程序目前只在Windows上运行,所以窗口特定的解决scheme对我来说很好。 一些研究表明我使用“开始”命令,但是当我从Java尝试这样做时,会发出一个exception,表示这是一个无法识别的命令(与cmd.exe相同的命令)。 有谁知道如何从Java启动一个进程(如果需要的话,Windows特定的),还有什么belownormal级呢?

通过Windows快捷方式传递参数运行.jar

是否有可能运行.jar通过Windows快捷方式(.lnk)传递参数?

如何为您的Java应用程序创build本机二进制文件?

我想知道如何将Java应用程序打包到Windows,Linux和Mac OS X的本机二进制文件中。 我知道“我的世界”这样做,但我不知道如何。 这是我想做的事情: 从NetBeans(最好)或Eclipse,自动构build三个二进制文件。 包含OpenGL等的本地库。 所有。 如果可能的话,模糊我的代码。 如果有一些方法来模仿Minecraft的自动更新function,那就太棒了。 那么,是否有任何工具可以为您做这个工作,还是我需要编写大量的XML来完成这个工作?

Java Runtime.getRunTime()。exec(CMD)不支持pipe道

我试图编写一个程序,将显示并能够使用JFrame窗口更新您的IP地址设置。 我正在看纯粹在Windows上运行,所以我试图能够使用netsh Windows命令来检索/设置的细节。 windows命令: netsh interface ip show config name="Local Area Connection" | Find "IP" netsh interface ip show config name="Local Area Connection" | Find "IP"返回正是我想要的,但是我写的代码不会通过pipe道工作,它只会在我写入“本地连接”部分时才起作用。 有什么方法可以使用pipe道function来只返回IP地址? 我读过,你可以传递行作为string数组,即string[] cmd = netsh …….. package ipchanger; import java.io.BufferedReader; import java.io.InputStreamReader; public class test { private String CMD; public void executecommand(String CMD) { this.CMD = CMD; try { […]

用Java设置Windows系统variables

有没有办法将特定的目录添加到Windows系统variables%PATH%? 这似乎不工作: String[] cmd = { "cmd", "/c", "set", "PATH=\"%PATH%;c:\\test\"" }; Runtime.getRuntime().exec( cmd ); c:\ test \不会出现在System.getenv(“PATH”); 或者在输出中 String[] cmd = { "cmd", "/c", "echo", "%PATH%" }; Runtime.getRuntime().exec( cmd ); 我需要的是在Windows下修改当前Java进程的%PATH%variables。 原因是,我需要加载一些本机的dll文件相互参照。 所以我想将应用程序path添加到Windows环境。 接下来我尝试了一个C语言函数“putenv”的小型JNI-Wrapper,它看起来像这样: JNIEXPORT void JNICALL Java_com_splitscreen_AppletTest_PutEnv_putEnv (JNIEnv *env, jobject jobj, jstring val) { jboolean iscopy; const char *mvalue = (*env)->GetStringUTFChars( env, val, &iscopy); […]

通过命令提示符运行(可能path错误?)

编译示例(javac StudentApp.java)时从Notepad ++编译我的代码时出现问题。 它不编译,而是我得到这个错误代码 – “不被识别为内部或外部命令可操作的程序或batch file”。 我现在使用Windows 8 – 8.1。 这是我的path: C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;append 如果有人能帮助,我将不胜感激。 谢谢。

apache tomcat 8009端口正在使用中

当我在eclipse上启动tomcat时,我得到了这个消息: 本地主机上的Tomcat v6.0 Server所需的端口8009已被使用。 服务器可能已经在另一个进程中运行,或者系统进程可能正在使用该端口。 要启动此服务器,您需要停止另一个进程或更改端口号。 当我手动启动tomcat时,它给了我这个exception跟踪: C:\apache-tomcat-6\bin>catalina.bat run Using CATALINA_BASE: "C:\apache-tomcat-6" Using CATALINA_HOME: "C:\apache-tomcat-6" Using CATALINA_TMPDIR: "C:\apache-tomcat-6\temp" Using JRE_HOME: "C:\Program Files\Java\jdk1.6.0_20" Using CLASSPATH: "C:\apache-tomcat-6\bin\bootstrap.jar" Dec 14, 2011 11:32:17 AM org.apache.catalina.core.AprLifecycleListener init INFO: Loaded APR based Apache Tomcat Native library 1.1.22. Dec 14, 2011 11:32:17 AM org.apache.catalina.core.AprLifecycleListener init INFO: APR capabilities: IPv6 [false], sendfile [true], […]