Articles of Java的

Java exec()不会返回pipe道连接命令的预期结果

我正在调用通过pipe道连接的命令行程序。 所有这些都可以在Linux上运行。 我的方法: protected String execCommand(String command) throws IOException { String line = null; if (command.length() > 0) { Process child = Runtime.getRuntime().exec(command); InputStream lsOut = child.getInputStream(); InputStreamReader r = new InputStreamReader(lsOut); BufferedReader in = new BufferedReader(r); String readline = null; while ((readline = in.readLine()) != null) { line = line + readline; } } […]

如何使用java.nio.Files创build软符号链接

我使用这样的命令在Windows上创build符号链接: cmd /c mklink /J "${linkName.canonicalPath}" "${targetFolder.canonicalPath}" 从Groovy和使用Runtime.getRuntime()。exec()方法 它工作正常,但我想要使用java.nio.Files.createSymbolicLink()方法。 但我总是得到相同的错误信息: java.nio.file.FileSystemException: A required privilege is not held by the client. mklink / J命令适用于当前用户,我想避免提升权限

在内存中读取exe文件并执行它

是否有可能使用Windows来读取文件到内存(保持字节数组中的数据),从文件系统中删除原始文件,并从内存中执行它? 编辑 我的目标是保护我的Java代码免受反向工程。 我用C ++编写了一个启动器,将我的encryption的jar文件解密并启动它。 小问题是,我必须在文件系统中的某处写入我的解密的jar文件,所以它可以很容易地捕获和反编译…有没有办法来防止这种情况?

关于JFrames的问题

我正在运行Windows。 当你在Windows上运行一个应用程序时,你会得到一个button任务栏,你可以点击它来最大化和最小化它。 是否有可能创build一个JFrame没有这个或其他组件具有JFrame的function,但没有将其添加到任务栏。

SWT在Windows上写入DLL文件在哪里?

我无法在互联网上findSWT试图写入dll文件的地方。 我有一台计算机,因为SWT无法写入DLL,所以jar不运行。 更新1 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javaws.Launcher.executeApplication(Unknown Source) at com.sun.javaws.Launcher.executeMainClass(Unknown Source) at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) at com.sun.javaws.Launcher.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: no swt-win32-3738 in java.library.path no swt-win32 in java.library.path Can't load library: \\ubz01fst\Students\User2010\Com\xxx\swt-win32-3738.dll Can't load library: […]

Java的。 System.exit(int status)。 退出状态的值

我在stackoverflow上看到了很多关于System.exit(int status)问题。 例如: 系统差异。 在Java中退出(0),System.exit(-1),System.exit(1) System.exit(0)和System.exit(-1)之间的区别 但是我没有看到我的部分问题的答案: Microsoft产品( Microsoft站点 )的exit status和System Error Codes之间是否有直接连接? 当然,我们没有任何直接的联系, 但是:我们可以build立这种联系吗? 如果我们在Windows操作系统上运行我们的java程序,并且我们的java程序有System.exit(int status)语句,那么我们可以使用System Error Codes list吗? 是不是好主意? 你怎么看待这件事? 任何其他的想法? 例: Java程序通过Wisdows OS上的命令行运行; 我们的java程序捕获exception像FileNotFoundException ; 在这之后,我们决定通过System.exit(int state)closures程序。 在这种情况下可以exit status是否等于2 ? 因为( 微软网站 ): ERROR_FILE_NOT_FOUND 2 (0x2) The system cannot find the file specified.

从Java触发shell脚本的最佳方法

我有一个我想从J2EE Web应用程序触发的shell脚本。 该脚本做了很多事情 – 处理,FTP等 – 这是一个遗留问题。 运行需要很长时间。 我想知道什么是最好的方法。 我希望用户能够点击链接,触发脚本,并向用户显示一条消息,说明脚本已经启动。 我希望HTTP请求/响应周期是瞬时的,不pipe我的脚本需要很长时间才能运行。 我可以想到三个select: 在处理用户点击的过程中产生一个新的线程。 但是,我不认为这符合J2EE规范。 向HTTP响应stream发送一些输出并在触发脚本之前提交它。 这给出了HTTP请求/响应循环已经完成的错觉,但实际上处理请求的线程仍然在那里等待shell脚本完成。 所以我已经基本上劫持了容器HTTP处理线程为我自己的目的。 创build一个包装脚本,在后台启动我的主脚本。 这将使请求/响应周期在容器中正常完成。 以上所有将使用servlet和Runtime.getRuntime()。exec()。 这在Java 1.4.2上使用Oracle的OC4J应用服务器在Solaris上运行。 请问有没有人有任何意见哪个是最简单的解决scheme,为什么? 还是有没有人有更好的方法? 我们已经有了Quartz,但是我们不希望将shell脚本重新实现为Java进程。 谢谢。

无法parsing符号“IOUtils”

我已经使用下面的代码在我的android应用程序中创build一个临时文件: public File streamToFile (InputStream in) throws IOException { File tempFile = File.createTempFile("sample", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in, out); return tempFile; } 现在问题是Cannot resolve symbol 'IOUtils' 。 我做了一些Googlesearch,发现使用IOUtils我需要下载并包含一个jar文件。 我从这里下载了jar文件( commons-io-2.4-bin.zip )。 我从zip压缩包中添加了名为commons-io-2.4.jar的jar,当我尝试使用以下命令导入它时: import org.apache.commons.io.IOUtils; 它显示错误Cannot resolve symbol 'io' 。 所以我试图导入它像: import org.apache.commons.* 但是我仍然得到错误Cannot resolve symbol 'IOUtils' 。 问题1:为什么我得到这个错误? 如何解决? 问题2:有什么办法可以在不使用外部库的情况下从InputStream创build临时文件? 或者这是最有效的方法吗? 我正在使用android […]

使用stdin通过/ proc / {pid} / fd / 0发送命令到java -jar

我试图使用/ proc / {pid} / fd / 0发送一个命令到我的世界服务器jar,但服务器不执行命令。 要复制我正在尝试做的事情,你可以在基于Debian的机器上(也可能是其他的Linux分发版)来做这件事。 我用什么来testing这个: Ubuntu 14.04 minecraft_server.jar (testing1.8) OpenJDK运行环境(使用default-jre-headless安装) 第一个控制台 $ java -jar minecraft_server.jar nogui 响应:[…服务器启动并等待input] say hi 响应:[19:52:23] [Server thread / INFO]:[Server] hi 第二个控制台 现在,当我切换到第二个控制台,与服务器仍然在第一我写: echo "say hi2" >> /proc/$(pidof java)/fd/0 一切都很好,直到我切换回第一个控制台。 我可以看到文字“说hi2”但服务器没有识别它。 我可以在第一个控制台再次写入另一个命令,就好像从第二个控制台input的文本还没有存在。 为什么是这样? 更重要的是,如何以正确的方式使用/ proc / {pid} / fd / 0将命令发送到java jar文件? 我不知道这是否是某种我不知道的Java事物,如果我在执行服务器时可以使用某个标志或某些东西,或者它是服务器JAR本身就是问题。 我知道你可以使用screen,tail -f或者某种服务器封装来实现这个function,但这不是我所追求的。 我想以某种方式发送一个使用这个方法的命令。 […]

GlassFish 4(linux)部署错误

我在Windows环境下为我的Java应用程序创build了.ear文件。 另外,我可以成功地将它部署到GlassFish 4.但是,将相同的.ear部署到linux GlassFish 4不起作用,因为我收到错误(请参阅下面的日志)。 我的环境详情: Windows 7,jdk1.8.0_45,用于项目编译和GlassFish 4.1.1 红帽企业Linux服务器,内核2.6.32,x86_64,GlassFish服务器开源版本4.1(内部版本13),java-1.8.0-openjdk-1.8.0.31-1.b13.el6_6.x86_64 我的日志(更新): [2016-03-09T14:40:44.697+0200] [glassfish 4.1] [WARNING] [] [com.sun.jdo.codegen.ejb.cmp] [tid: _ThreadID=285 _ThreadName=admin-listener(19)] [timeMillis: 1457527244697] [levelValue: 900] [[ JDO83007: Caught Exception while compiling generated classes: ]] [2016-03-09T14:40:44.704+0200] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=285 _ThreadName=admin-listener(19)] [timeMillis: 1457527244704] [levelValue: 1000] [[ Exception while invoking class org.glassfish.ejb.startup.EjbDeployer prepare method]] [2016-03-09T14:40:44.704+0200] […]