为了账号安全,请及时绑定邮箱和手机立即绑定

Unix 和 C++ 但不知道 RPM 或 Java

Unix 和 C++ 但不知道 RPM 或 Java

慕婉清6462132 2021-12-01 16:10:14
我是 Unix 和 C++ 的老手,但不是 RPM 或 Java。我必须写一个Java程序。如果我运行了一个 Hello World,我可以使用互联网来找到我的方式,但是我如何才能运行一个 Java Hello World?我确实在一台机器上有 root,但对机器的出处知之甚少。使用 SuSE 11.4,如 cat 所见/etc/*-release。
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

目前,您似乎需要 Java 1.8。您需要开发工具包“JDK”而不是运行时环境“JRE”。


如果你有它,你会看到这里显示的jdk1.8blahblah。你会认为他们会把 Java 放在包名中,是的,他们曾经这样做过。但没有更多,所以grep'ing forjava只会找到旧版本。


rpm -qa |grep jdk

jdk1.8-1.8.0_191-fcs.x86_64

java-1_6_0-openjdk-plugin-1.6.0.0_b20.1.9.7-1.2.1.x86_64

java-1_6_0-openjdk-1.6.0.0_b20.1.9.7-1.2.1.x86_64

如果没有,java.com 不是答案——他们似乎只有 JRE。他们的搜索工具不会在带有“JDK”或“下载 JDK 8”的前十名结果中返回您需要的链接。但谷歌在第一次点击时找到了它,目前:https : //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html


为 64 位获取 x64 版本,为 32 位获取 x86 版本。


Firefox 有一个内置的 RPM 安装程序。如果您让它安装,您将看到一个名为“下载”的对话框(仅供参考;关闭);安装摘要(点击完成)。系统会提示您输入 root 密码,这让我感到不舒服。或者,您可以将 RPM 文件保存在任何地方,然后以 root 身份运行(替换您的文件名)


rpm -ivh wherever/jre-8u191-linux-x64.rpm

当它运行时,它将输出(除其他外)包名称。对于进一步的 rpm 命令,您使用这个包名,而不是文件名。(如果您尝试rpm -q filename, 或rpm -e filename,它会告诉您文件名未安装,如果rpm -ivh似乎只是告诉您它已安装,这会令人困惑!)


现在它在哪里安装了您需要的工具?


> rpm -ql jdk1.8-1.8.0_191-fcs.x86_64 | grep 'bin/java$'

/usr/java/jdk1.8.0_191-amd64/bin/java

/usr/java/jdk1.8.0_191-amd64/jre/bin/java

如果您在那里看到它们,您可以删除 RPM 文件。


好的,它在 /usr/java/jdk1.8.0_191-amd64 中。将 /usr/java/jdk1.8.0_191-amd64/bin 添加到 .cshrc 中的 PATH 或您有什么并重新获取它。


> java -version

java version "1.8.0_191"

Java(TM) SE Runtime Environment (build 1.8.0_191-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

> javac -version

javac 1.8.0_191

太好了,我们看到了 1.8!


Java 将源代码保存在 .java 文件中,每个类一个文件。这些由编译器读取,编译器在 .class 文件中输出字节码。然后就可以运行了。


把它放在一个名为的文件中HelloWorld.java:


public class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello, World");

    }

}

在该目录中,键入以下内容。他们应该在没有进一步输出的情况下成功。


> javac HelloWorld.java

> java HelloWorld

然后您应该会看到Hello, World输出。


以上可能需要一个-cp .或-cp ./选项。

至于引导学习曲线:

  • 行到行的语法大多类似于 C++。

  • 不需要明确的“包含”语法;您可以通过名称引用同一目录中的公共类。

  • 公共类必须具有其文件的名称,但文件可能包含其他私有类。

  • 它足够准确,因为您开始认为所有看起来像 C++ 对象(事物)的东西实际上都是作为指向引用计数对象的指针实现的。这 ”。” 就像 C++“->”。

  • 没有通过引用传递原子变量;总是按值(int boolean double 等)

  • 字符串是值和引用之间的中间地带

  • 对象通过引用传递,认为对它们的“引用”是通过值传递的。 Method( Thing thing )在 Java 中就像Method( Thing* pthing )在 C++ 中调用一样。 Method()thing/pthing本身的更改不会影响调用者,但thing.field/pthing->field更改是全局的。

  • 对于更具体的问题,谷歌应该能找到你需要的一切。


查看完整回答
反对 回复 2021-12-01
  • 1 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信