2012-06-12 124 views
2

我已将jre文件嵌入到我的应用程序设置中,我可以使用java.exe来执行一些java特定任务。在windows操作系统上启动jarsigner.exe,其中jdk/jre未由安装程序安装

,我想用jarsigner.exe但是当我推出的jarsigner,它会检查一些注册表项,并不能发现(因为JRE不是由JRE设置insatalled)他们,并给出错误。

我怎么能指定的jarsigner

java.exe的路径,以便它应该使用的java.exe,我点的不是检查注册表中。

错误日志:

Error opening registry key 'Software\JavaSoft\Java Runtime Environment

Error: could not find java.dll

Error: could not find Java SE Runtime Environment

我不知道是那里的jarsigner任何额外的参数可能是定义JAVA_HOME目录,或其他任何定义了的java.exe是存在的。

+0

“我已将jre文件嵌入到我的应用程序设置中”。很明显,您需要将一些* JDK *文件嵌入到您的应用程序设置中,显然您应该使用JDK自己的安装程序来执行此操作。 – EJP

+2

@EJP:是的,我实际上在应用程序设置中添加了一些jdk文件(jli.dll,msvcr71.dll和tools.jar)到应用程序安装程序,这些在jre安装但未安装jdk的系统上工作正常。 – tutalia

回答

0

Java Error opening registry key

被盗如有删除。

32位机

的java.exe,javaw.exe的和javaws.exe上

从64位机

从Windows \ SysWOW64中删除您的Windows \ System32文件夹

+0

我不能这样做,jre/jdk将被安装或不。我想从我的jarsigner.exe使用jre我提供。 – tutalia

2

没有特定的命令行参数,但在调用jarsigner时,仍然可以将java.home属性设置为指向与应用程序捆绑在一起的所需JRE。

例如,你可以调用jarsigner有两种:

  • ProcessBuilder并设置java.home属性,
  • Runtime.exec()允许设置envp环境变量的变体,
  • 或批处理/ shell脚本并在其中设置JAVA_HOME属性。
+0

感谢您的回答。我使用C++来调用jarsigner.exe。我试图用批处理文件做,BU有相同的错误。 – tutalia

+0

批处理文件内容:设置JAVA_HOME = “C:\ JRE6 \” jarsigner.exe 暂停 – tutalia

1

使jarsigner与JRE而不是JDK一起工作。需要从JDK

JRE中捆绑这些文件从\ BIN \ jarsigner.exe到\ BIN \ jarsigner.exe 从\ BIN \ msvcr100.dll到\ BIN \ msvcr100.dll 从\ BIN \ jli.dll到\ bin \ jli.dll 从\ lib \ tool.jar到\ lib \ tool.jar 我对此进行了测试,发现它适合我。

+0

我只是需要\ BIN \ jarsigner.exe和\ LIB \ tool.jar。确保它们来自与安装的JRE相同版本的SDK,否则会出现版本错误。 – Dunc

相关问题