我正在无头服务器上安装 Java 和 Tomcat。客户端没有Java,只能看到一个网页。
我应该安装 openjdk-17 还是 openjdk-17-headless?
我正在无头服务器上安装 Java 和 Tomcat。客户端没有Java,只能看到一个网页。
我应该安装 openjdk-17 还是 openjdk-17-headless?
如果有人能回答我,我只需要一个答案。我知道这可能不适合这个问题
我在 Java 8 中创建了带套接字的聊天应用程序,我使用 TLS 1.2 我的问题是:有没有什么方法可以让某人读取我发送的数据(读取他可以解密的数据)?也许像中间人攻击或其他东西一样。我应该注意,我使用的服务器只是用于将传入消息发送到目标客户端(不在其上存储任何内容)。
我问这个是因为我一直想知道为什么使用所谓受保护应用程序的人最后会被抓到。如果有人使用我的应用程序并开始发送一些非法内容(字面意思是任何内容)怎么办。如果我的服务器上没有存储任何数据,这个人会被抓到吗?我可以声称我的应用程序绝对安全吗?
对不起,如果这是愚蠢的问题
在此 链接 rustyx
中提到他使用调试虚拟机和以下标志-XX:+PrintOptoAssembly
来获取他的 java 字节码的汇编指令
我安装了调试虚拟机sudo apt-get install openjdk-17-dbg
我使用命令java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Main
我习惯于使用 gdb 在 C++ 中执行此操作,但无法使其与 java 一起使用 printAssembly 仅打印指令的十六进制值,如下例所示,它重复多次,没有我的实际代码函数或任何有意义的符号的迹象
abstract class Base {
Base(){
System.out.println("Base Constructor Called");
}
abstract void fun();
}
class Dervied extends Base {
Dervied(){
System.out.println("Dervied Constructor called");
}
void fun(){
int x = 0;
x = x + 1;
System.out.println("Dervied fun() called " + x);
}
}
class Main {
public static void main(String args[]){
Dervied d = new Dervied();
d.fun();
}
}
32 1 3 java.lang.Object::<init> (1 bytes)
============================= C1-compiled nmethod ==============================
----------------------------------- Assembly -----------------------------------
Compiled method (c1) 32 1 3 java.lang.Object::<init> (1 bytes)
total in heap [0x00007fca25878010,0x00007fca25878320] = 784
relocation [0x00007fca25878170,0x00007fca258781a0] = 48
main code [0x00007fca258781a0,0x00007fca25878280] = 224
stub code [0x00007fca25878280,0x00007fca258782b0] = 48
metadata [0x00007fca258782b0,0x00007fca258782c0] = 16
scopes data [0x00007fca258782c0,0x00007fca258782d8] = 24
scopes pcs [0x00007fca258782d8,0x00007fca25878318] = 64
dependencies [0x00007fca25878318,0x00007fca25878320] = 8
[Constant Pool (empty)]
[MachCode]
[Entry Point]
# {method} {0x0000000800448920} '<init>' '()V' in 'java/lang/Object'
# [sp+0x40] (sp of caller)
0x00007fca258781a0: 448b 5608 | 49bb 0000 | 0000 0800 | 0000 4d03 | d34c 3bd0
0x00007fca258781b4: ; {runtime_call ic_miss_stub}
0x00007fca258781b4: 0f85 c6a5 | abff 660f | 1f44 0000
[Verified Entry Point]
0x00007fca258781c0: 8984 2400 | c0fe ff55 | 4883 ec30
0x00007fca258781cc: ; {metadata(method data for {method} {0x0000000800448920} '<init>' '()V' in 'java/lang/Object')}
0x00007fca258781cc: 48bf 1888 | 801c ca7f | 0000 8b9f | f400 0000 | 83c3 0289 | 9ff4 0000 | 0081 e3fe | 0700 0083
0x00007fca258781ec: fb00 0f84
0x00007fca258781f0: ;*return {reexecute=0 rethrow=0 return_oop=0}
; - java.lang.Object::<init>@0 (line 44)
0x00007fca258781f0: 1300 0000 | 4883 c430
0x00007fca258781f8: ; {poll_return}
0x00007fca258781f8: 5d49 3ba7 | 4003 0000 | 0f87 1f00
0x00007fca25878204: ; {metadata({method} {0x0000000800448920} '<init>' '()V' in 'java/lang/Object')}
0x00007fca25878204: 0000 c349 | ba20 8944 | 0008 0000 | 004c 8954 | 2408 48c7 | 0424 ffff
0x00007fca2587821c: ; {runtime_call counter_overflow Runtime1 stub}
0x00007fca2587821c: ffff e8dd
0x00007fca25878220: ; ImmutableOopMap {rsi=Oop }
;*synchronization entry
; - java.lang.Object::<init>@-1 (line 44)
0x00007fca25878220: 6ab6 ffeb
0x00007fca25878224: ; {internal_word}
0x00007fca25878224: cf49 baf9 | 8187 25ca | 7f00 004d | 8997 5803
0x00007fca25878234: ; {runtime_call SafepointBlob}
0x00007fca25878234: 0000 e9c5 | 0eac ff90 | 9049 8b87 | d003 0000 | 49c7 87d0 | 0300 0000 | 0000 0049 | c787 d803
0x00007fca25878254: 0000 0000 | 0000 4883
0x00007fca2587825c: ; {runtime_call unwind_exception Runtime1 stub}
0x00007fca2587825c: c430 5de9 | 9c01 b6ff | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4 | f4f4 f4f4
0x00007fca2587827c: f4f4 f4f4
[Exception Handler]
0x00007fca25878280: ; {no_reloc}
0x00007fca25878280: e87b 31b6
0x00007fca25878284: ; {external_word}
0x00007fca25878284: ff48 bf6a | 7482 41ca | 7f00 0048
0x00007fca25878290: ; {runtime_call}
0x00007fca25878290: 83e4 f0e8 | 080a ae1b
0x00007fca25878298: ; {section_word}
0x00007fca25878298: f449 ba99 | 8287 25ca | 7f00 0041
0x00007fca258782a4: ; {runtime_call DeoptimizationBlob}
0x00007fca258782a4: 52e9 f600 | acff f4f4 | f4f4 f4f4
[/MachCode]
34 2 3 java.lang.String::hashCode (60 bytes)
这个真的不知道该怎么办了。我正在尝试使用更多 RAM 启动我的世界服务器,但终端中的命令给了我这个错误。
仅当我转到文件管理器并单击 server.jar 文件时,服务器才能正常工作,然后它会像 GUI 和所有内容一样正常启动。问题是我不能通过那里设置 RAM 参数,只能通过命令。
我试过了:
sudo java -Xmx1024 -Xms1024 -jar server.jar
sudo java -Xmx4096 -Xms1024 -jar server.jar
sudo java -Xmx8164 -Xms1024 -jar server.jar
sudo java -Xmx1000000 -Xms1024 -jar server.jar
sudo java -Xmx3072 -Xms2048 -jar server.jar
sudo java -Xmx2048 -Xms512 -jar server.jar
sudo java -Xmx1024 -Xms512 -jar server.jar
sudo java -Xmx512 -Xms256 -jar server.jar
每次都会导致完全相同的错误:
“虚拟机初始化过程中发生错误”
“最大堆太小”
我也用 -nogui 试过这些,同样的错误。
许多系统,尤其是提供软件 KVM 的各种平台,都有基于 Java 的 UI 用于管理。这些通常会提供一个 URL 来下载“jnlp”文件。
这些天来,Oracle 等人已经决定从 JRE 包中删除这个特性。参考:Linux x64 的 Java 8 没有 libnpjp2.so? 参考:https ://java.com/en/download/help/release_changes.html
现在应该如何在没有 Java 插件的情况下启动这些工具(尤其是 Oracle 服务器的 ILO UI)?
我正在运行 debian buster,并且有一个非常古老的 java 游戏,我用 openjdk 玩过本机游戏,但我不记得确切的版本。所以我试图用javap找出jar文件是用哪个java版本编译的。
javap -v java-spiele/edna_bricht_aus/Edna.jar
Error: class not found: java-spiele/edna_bricht_aus/Edna.jar
默认java版本是
java -version
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb10u1, mixed mode, sharing)
也许是新的。所以我从stretch repo安装了openjdk-8(是的,我知道franken debian)再试一次
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/javap -v /home/alex/java-spiele/edna_bricht_aus/Edna.jar
Error: class not found: /home/alex/java-spiele/edna_bricht_aus/Edna.jar
甚至有可能从商业游戏中获取信息吗?使用 openjdk-8 游戏没有运行它崩溃。
删除 openjdk-17-jre 和 jdk :
sudo apt remove openjdk-17-jre openjdk-17-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
openjdk-17-jdk-headless
Use 'sudo apt autoremove' to remove it.
The following packages will be REMOVED:
openjdk-17-jdk openjdk-17-jre
0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
After this operation, 9,250 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 295782 files and directories currently installed.)
Removing openjdk-17-jdk:amd64 (17~19-1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
Removing openjdk-17-jre:amd64 (17~19-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
debian@debian:~/Downloads$ java -version
openjdk version "17-ea" 2021-09-14
OpenJDK Runtime Environment (build 17-ea+19-Debian-1)
OpenJDK 64-Bit Server VM (build 17-ea+19-Debian-1, mixed mode, sharing)
debian@debian:~/Downloads$ sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
openjdk-17-jdk-headless
0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
After this operation, 248 MB disk space will be freed.
Do you want to continue? [Y/n] y
重新启动并再次登录。
java -version
openjdk version "17-ea" 2021-09-14
OpenJDK Runtime Environment (build 17-ea+19-Debian-1)
OpenJDK 64-Bit Server VM (build 17-ea+19-Debian-1, mixed mode, sharing)
为什么不能删除java版本?
我按照本指南将我的 Spring Boot 应用程序设置为 init.d 服务。 https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment-initd-service 我的网站运行良好,但是当我尝试部署一些新的更改时没有得到更新。这就是我试图重新部署的方式:
$ ~/deploy.sh
#!/bin/bash
rm -rd /var/myapp/target
rm -rd /etc/init.d/myapp
git --git-dir=/var/myapp/.git pull
sudo systemctl stop myapp
mvn clean package
rm -rd /etc/init.d/myapp
ln -s /var/myapp/target/myapp-0.1.0.jar /etc/init.d/myapp
systemctl daemon-reload
systemctl start myapp
systemctl status myapp
我检查了我的 jar 是否有最新的代码,但它仍然不会更新。我又玩了一些,我想我删除了一些 init.d 文件,现在它根本不起作用并给出了这个错误。
$ sudo ln -s /var/myapp/target/myapp-0.1.0.jar /etc/init.d/myapp
ln: failed to create symbolic link ‘/etc/init.d/myapp’: File exists
$ sudo systemctl start whatthephil
Failed to start myapp.service: Unit not found.
Spring 指南说创建链接会安装应用程序,但它没有正确执行。我在 /var/logs/myapp 中没有日志。我曾经在那里看到日志。为什么要寻找 myapp.service?简单地创建链接如何假设安装应用程序?为什么我找不到单位?