Articles of Java的

java.io.IOException的可能原因:CreateProcess error = 5

什么样的问题可能会导致Java的ProcessBuilder.start方法返回一个IOExceptionexception,并loggingerror = 5? 具体来说,我们已经看到一个远程客户系统运行一些Java代码沿线… ProcessBuilder pb = new ProcessBuilder(cmdArray); pb.redirectErrorStream(true); Process p = pb.start(); 抛出像这样的例外… java.io.IOException: CreateProcess: C:\example\example.exe argument1 argument2 error=5 at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source) at java.lang.ProcessBuilder.start(Unknown Source) at example_code_above 我们已经确认了在例外“C:\ example \ example.exe argument1 argument2”中注明的命令可以通过cmd.exe手动成功运行,所以我们确信命令本身没有被破坏。

使用Launch4j将Java应用程序固定到Windows 7任务栏

我目前正试图将Java应用程序固定到Windows 7任务栏。 该应用程序使用Launch4j启动。 程序图标显示正确,但右键单击任务栏上的图标只会显示带有“closures窗口”条目的上下文菜单。 没有用于将应用程序固定到任务栏的菜单项。 将EXE文件拖到任务栏也不能正常工作。 在任务栏中单击此新启动器时,任务栏中会出现另一个图标。 我按照解决这两个问题的方法来解决问题,但是没有帮助: 将Java应用程序固定到Windows 7任务栏 使用JNA获取/设置应用程序标识符 从第二个问题/解决scheme的JNA东西编译,并没有抛出任何exception。 设置后我可以读取应用程序ID。 但我仍然不能将应用程序固定到任务栏。 我在Github上创build了一个小的testing应用程序来演示这个问题: https://github.com/kayahr/launch4jtest 该应用程序使用Maven作为构build系统。 只需运行mvn package ,你会在目标目录中find一个ZIP文件,其中包含EXE文件和需要设置该应用程序ID的jna.jar。 将此ZIP解压缩到某个目录,双击EXE并尝试将应用程序固定到任务栏上,您将看到问题。 那么这个应用程序有什么问题?

Windows上的Java:如何删除垃圾文件(使用JNA)

我根本没有使用Windows API的经验,所以请原谅我的无知。 我想删除垃圾文件。 如何使用JNA做到这一点,以及如何检测这是不可能的,例如,因为文件位于networking共享?

java getRuntime()。exec一个需要UAC的exe

所以我们有一个作为Windows服务运行的java进程。 它需要使用Runtime.getRuntime().exec(command)执行一个命令。 它执行的命令需要UAC。 这是在Windows Server 2008上,听起来像你不能禁用一个单一的可执行文件的UAC,所以有没有其他的方式来使这个工作?

由于jill.rar + jack.rar导致Android构build失败

受这个答案的启发,我使用: java -jar %BUILDTOOLSPATH%\jill.jar –output classes.jayce src java -jar %BUILDTOOLSPATH%\jack.jar –import classes.jayce –output-dex . 在Windows上构build一个Android应用程序。 我得到: 无法加载文件'classes.jayce',条目'/dom\domain\main.jayce':文件'classes.jayce'中的错误types,条目'/dom\domain\main.jayce',find'Ldom /域/主;” 期待“Ldom \ domain \ main;” 这似乎是\或/ Windows问题。 如何解决这个问题? 注意: 这里是完整的源代码。 我的目标是准备使用Android“Hello World”应用程序,可以从命令行编译而不使用IDE(例如Android Studio)。

Java 1.8.65 javac缺失

我几天前下载了最新的1.8.65 JDK,缺lessjavac文件 如果有人认为我不小心下载了JRE,这里有2个截图 当我浏览到我安装了JDK的目录时 C:\Enwicklung\JDK\1.8.65\bin javac.exe文件不在应该存在的位置,就像在第二个屏幕截图中看到的那样 谁能确认这一点? 试图第二次安装JDK,没有任何改变。 编辑:当然,我搜查了一个javac.exe整个驱动器,没有find匹配

通过修改desktop.ini更改图标的文件夹

我的目标是将我的电影库的每个文件夹的图标更改为Windows中使用Java的每个文件夹的图标。 每个文件夹都有一个256×256图标,以该文件夹命名,但具有适当的扩展名。 例如, 每秒5cm的文件夹中有5cm Per Second.ico文件。 我想我可以通过修改文件夹中的desktop.ini文件来做到这一点。 所有的文件夹中都有这个文件,因为每个文件夹中的图标曾经是文件夹的实际图标,但是当我更改了电影库的path后, desktop.ini中图标的path没有更新。 每个desktop.ini都是这样的: [.ShellClassInfo] IconResource=F:\Anime\Movies\5cm Per Second\5cm Per Second.ico,0 现在图标所在的path是这样的: E:\电影\每秒5厘米\每秒5厘米,所以我想我所要做的就是将desktop.ini更改为: [.ShellClassInfo] IconResource=E:\Movies\5cm Per Second\5cm Per Second.ico,0 这根本不工作,然后我想我也应该让Windows知道desktop.ini是一个系统文件,我把这个添加到我的代码,但是根本不工作。 我的示例文件夹的代码: import java.io.File; import java.io.IOException; import org.ini4j.Wini; public class ListFiles { public static void main(String[] args) throws IOException { // Directory path here String path = "E:\\Movies\\5cm Per Second"; String […]

从Java程序写入C:\ Program Files

我写了一个包含自更新程序的Java应用程序。 自更新程序从Web服务器加载新的程序版本并replace应用程序文件。 如果应用程序安装在用户主目录中,则完美工作,但如果它安装在C:\ Program Files文件夹中,则它将在Windows机器上失败。 这是因为JVM是在没有对程序目录的写访问权限的用户帐户下执行的。 如果本地程序(例如安装程序)尝试写入程序文件夹,则通常会popup一个popup窗口,要求用户允许写入操作。 Java应用程序不会发生这种情况。 为什么? 有什么办法可以实现将Java程序写入受限制文件夹的操作,从而popup安全popup框,以便用户可以访问该文件夹? 感谢您的回应。 根据答案,我看到以下选项: Java Web Start 对我来说这不是最终用户的select。 我认为没有人可以期望普通的最终用户知道什么是Java Web Start,它有什么好处以及如何使用它,例如我怀疑普通的Windows用户是否知道如何卸载Java Web Start应用程序。 使用带有清单的exe启动程序启动Java应用程序 就我所了解的这个解决scheme而言,exe启动器会在应用程序启动时请求扩展执行权。 这不完全是我想要的,因为我的用例,如果更新可用而不是每个应用程序启动,获得扩展权利就足够了。 通过调用本机可执行文件来执行更新操作 可以调用一个本地可执行文件来让它执行更新操作。 通过这种方式,如果更新可用,应用程序只会请求扩展权限。 这听起来不错,但包括一些Windows本地编码,并不适用于其他平台。 在程序文件夹中安装启动程序,并在用户主目录中安装应用程序 你可以在调用安装在用户主目录中的应用程序的程序文件夹中放置一个启动程序。 这样就可以更新用户主文件夹中的应用程序。 我使用InnoSetup在Windows上安装我的应用程序,并且据我所见,拆分安装很难用这个安装程序实现,也可能与其他安装程序实现。 将完整的应用程序安装在用户的主目录中 由于用户可以写入主目录,因此完全没有问题。 对我来说,这看起来是最简单的select。

为什么资源path通过Java代码在Windows中变为空?

我正在写文件的path if (!new File(path).exists()) { URL location = this.getClass().getClassLoader().getResource(path); if (location == null) { location = Thread.currentThread().getContextClassLoader().getResource(path); } path = location.getPath(); path = URLDecoder.decode(path, "utf-8"); path = new File(path).getPath(); if (!new File(path).exists()) { throw new Exception("Unable to resolve path: " + path); } } 相同的代码工作的Linux机器,但对于Windows我得到的location = Null和path=./../config/equipmenttemplates/已经在那里。

JDK似乎安装,但没有检测到,命令不起作用

我刚在家里买了一台新电脑。 我一直试图在我的Windows 7 64位机器上安装JDK 8u11。 我知道我下载了正确的64位版本。 我知道我的电脑上已经安装了JRE,因为java -version在cmd中返回java version "1.8.0_11" 。 我可以在“添加/删除程序”列表中看到JRE和JDK。 但是,我的IDE不能识别JDK是否被安装,当我在cmd中键入javac时,我得到'javac' is not recognized as an internal or external command, operable program, or batch file. 这使我相信,JDK并没有真正安装,但我已经尝试重新安装和重新启动几次,就像我之前所说,它出现在添加/删除程序。 我还可以在\ Program Files \ Java \ jre8文件夹旁看到\ jdk1.8.0_11文件系统。 \ jdk1.8.0_11文件系统看起来完整,当然除了实际的应用程序jdk-8u11.exe(或类似的文件)。 那是无处可寻的。 任何人都知道问题可能是什么? 注意: JAVA_HOME不是一个环境variables。 我试图手动创build环境variables,但以下path不起作用: C:\ Program Files \ Java \ jdk1.8.0_11 C:\ Program Files \ Java […]