标签: java

如何找到jdk安装的路径?

我已经jdk1.7.0.rpm在 RHEL6 中安装了软件包。
我在哪里可以找到执行我的第一个 java 程序的路径?

rhel java

52
推荐指数
4
解决办法
75万
查看次数

openjdk-8-jre-headless :取决于:ca-certificates-java 但它不会被安装

无法安装Java8

apt-get install openjdk-8-jre-headless
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 openjdk-8-jre-headless : Depends: ca-certificates-java but it is not going to be …
Run Code Online (Sandbox Code Playgroud)

linux debian java software-installation

46
推荐指数
2
解决办法
4万
查看次数

如何跟踪java程序?

作为系统管理员,我有时会遇到这样的情况,即程序运行异常,而根本不会产生错误或产生无意义的错误消息。

过去 - 在 java 出现之前 - 有两种对策:

  1. 如果没有其他帮助 - RTFM ;-)
  2. 如果即使 1. 也无济于事 - 跟踪系统调用并查看发生了什么

我通常strace -f在 Linux 上用于此任务(其他操作系统具有类似的跟踪工具)。现在,虽然这通常适用于任何老式程序,但在java进程上执行相同操作时,跟踪会变得非常模糊。有太多看起来与任何实际操作无关的系统调用,在这样的转储中搜索是很糟糕的。

有没有更好的方法来做到这一点(如果源代码不可用)?

linux java trace

26
推荐指数
2
解决办法
5万
查看次数

运行未签名的 javaws 代码

对于 KVM 远程控制台,我需要能够运行jnlp文件。当我运行它时,我得到:

net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize application. 
at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:797)
at net.sourceforge.jnlp.Launcher.launchApplication(Launcher.java:555)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:908)
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Application Error: Cannot grant permissions to unsigned jars. Application requested security permissions, but jars are not signed.
at net.sourceforge.jnlp.runtime.JNLPClassLoader.setSecurity(JNLPClassLoader.java:319)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.<init>(JNLPClassLoader.java:239)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:381)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:337)
at net.sourceforge.jnlp.Launcher.createApplication(Launcher.java:789)
... 2 more
Run Code Online (Sandbox Code Playgroud)

我明白您为什么不希望浏览器运行任意未签名的代码。

但在这种情况下,我没有机会更改或签署代码,因为它来自 KVM 设备。

  • 我可以告诉 Java 这个小程序可以运行未签名吗?
    • 如果不是:我可以告诉运行该域中所有小程序的 Java 可以运行未签名吗?
      • 如果不是:我可以告诉 Java 运行所有小程序都可以运行未签名吗?
  • 鉴于我无法更改代码,是否有更好的选择?

我目前正在使用 Linux Mint 和 Chrome。

security java

25
推荐指数
3
解决办法
3万
查看次数

为什么 PDFTK 说它找不到就在那里的文件?

我正在尝试将一堆 PDF 编译成一个文档。ls显示文件位于我所在的目录中并且它们是可读的 ( -rw-r--r--)。但是当我尝试运行时pdftk 2017.pdf cat output test.pdf出现错误:

Error: Unexpected Exception in open_reader()
java.io.FileNotFoundException: 2017.pdf (Permission denied)
   at gnu.java.nio.channels.FileChannelImpl.open(libgcj.so.16)
   at gnu.java.nio.channels.FileChannelImpl.<init>(libgcj.so.16)
   at gnu.java.nio.channels.FileChannelImpl.create(libgcj.so.16)
   at java.io.RandomAccessFile.<init>(libgcj.so.16)
   at pdftk.com.lowagie.text.pdf.RandomAccessFileOrArray.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PRTokeniser.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
   at pdftk.com.lowagie.text.pdf.PdfReader.<init>(pdftk)
Error: Failed to open PDF file: 
   2017.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.
Run Code Online (Sandbox Code Playgroud)

如果我向该操作添加更多文件,我只会收到每个文件的错误。

我可以从命令行重命名 PDF,但mv 2017.pdf foo.pdf出现相同的错误。Error: Unexpected Exception in open_reader() java.io.FileNotFoundException: foo.pdf (Permission denied)

如果我尝试调用一个不存在的文件,例如。 pdftk 123.pdf cat output test.pdf …

java pdftk dropbox

24
推荐指数
2
解决办法
8711
查看次数

来自 /usr/bin/java 的 Java 位置

我试图在我的 Linux 系统中找到我的 java 位置并得到这个

[980@b449 ~]$ which java
/usr/bin/java


[980@b449 ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
Run Code Online (Sandbox Code Playgroud)

这两个命令有什么区别?

java symlink

21
推荐指数
2
解决办法
8万
查看次数

只杀死一个 Java 进程

我通常运行很少的 Java 应用程序,一个用于在本地运行的服务器,另一个用于一些 IDE,如 NetBeans。有时,经过大量重新部署后,我的服务器会卡在 OutOfMemoryException 上,因此我需要终止 Java 进程才能重新启动。

所以我这样做了,pkill -9 java但这也会杀死我不想要的正在运行的 IDE。那么我如何只杀死链接到正在运行的服务器的应用程序而不是其他的应用程序?我假设它们都在同一个进程下运行,但必须有一些方法来区分它们。

process kill java

19
推荐指数
3
解决办法
20万
查看次数

如何找到 $JAVA_HOME 在哪里设置?

我正在尝试更改 $JAVA_HOME 的值,我似乎无法找到当前正在哪个文件中设置它。我不记得上次我在哪里设置的。已经尝试过如何确定环境变量来自哪里?但我需要(编辑)一个可以设置变量的文件列表。

java environment-variables

18
推荐指数
2
解决办法
7万
查看次数

在 Debian 上启动 java 的问题:“加载共享库时出错:libjli.so”

我正在尝试启动 java:

$ java -version
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

$ ldd /usr/lib/jvm/java-6-openjdk/jre/bin/java
        linux-gate.so.1 =>  (0xb779f000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7780000)
        libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb7767000)
        libjli.so => /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/libjli.so (0xb7762000)
        libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb775e000)
        libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7603000)
        /lib/ld-linux.so.2 (0xb77a0000
$ ls /usr/lib/jvm/java-6-openjdk/jre/bin/../lib/i386/jli/
libjli.so
Run Code Online (Sandbox Code Playgroud)

但是java在root下工作:

$ sudo java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.7) (6b18-1.8.7-2~lenny1)
OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

更新:

/usr/lib/jvm/java-6-openjdk/jre/bin/java 实际上是我的java命令:

$ …
Run Code Online (Sandbox Code Playgroud)

permissions debian java dynamic-linking

17
推荐指数
2
解决办法
8万
查看次数

使用环境设置的可执行路径编写 systemd 单元文件

我正在为 Java 应用程序编写 systemd 单元文件,我想控制用于启动它的 Java 版本。我的(简化的)服务文件是

[Service]
Type=simple
EnvironmentFile=%h/Documents/apps/app/app-%i/app.cfg
ExecStart=${JAVA_HOME}/bin/java ${JAVA_OPTS} -jar %h/Documents/apps/app/app-%i/myapp.jar
SuccessExitStatus=143
Run Code Online (Sandbox Code Playgroud)

尝试启动时,我收到错误消息

Apr 28 12:43:37 rombert systemd[1613]: [/home/robert/.config/systemd/user/app@.service:7] Executable path is not absolute, ignoring: ${JAVA_HOME}/bin/java ${JAVA_OPT
Apr 28 12:43:37 rombert systemd[1613]: app@1.0.0.service lacks both ExecStart= and ExecStop= setting. Refusing.
Run Code Online (Sandbox Code Playgroud)

我知道JAVA_HOME设置正确;如果我改变ExecStart行开始,/usr/bin/java然后添加一些-DsomeOption=${JAVA_HOME}我可以看到的东西就好了。

显而易见的解决方法是创建一个包装脚本,但我觉得它违背了使用服务文件的意义。

如何使用单元文件为我的 Java 应用程序设置 JAVA_HOME?

java systemd

17
推荐指数
1
解决办法
3万
查看次数