我使用命令“java -cp /home/ubuntu/myapp”将命令设置为 mu app 类所在的目录。但是我似乎没有运气。终端只是回答我一个可能的 java 命令列表 - 有趣的是,其中包括“-cp”。我如何让 Ubuntu 认真对待我并真正按照我说的去做?
答案1
执行摘要
java -cp
不会自动运行指定类路径中的程序,它仅指定运行 Java 程序时要使用的类路径然后您必须在同一个命令中指定它。
完整解释
java
运行 Java 程序。它不会修改程序或存储有关程序的持久配置。
国旗-cp
没有放类路径,它指定运行 Java 程序时使用的类路径。
运行java
仅有的标志-cp
(及其参数)是无效语法。您必须告诉java
你想用这个类路径运行什么 Java 程序。这将使用该类路径运行该程序一次。除非再次指定类路径,否则它不会导致该程序将来使用该类路径运行。
从您的问题中无法清楚了解您到底想要完成什么,但我在下面详细介绍了几种可能性。
(如果您仍然需要更多信息,请随意编辑您的问题以澄清并对此答案发表评论,或者如果您发现您有单独的问题,您可以单独提出。java
该命令的手册页也可能有帮助;请注意,类或文件的名称是必需的。要获取计算机上jar
安装的确切版本的手册页,请运行。)java
man java
您可能根本不必手动设置类路径。
如果myapp
是位于 中的目录/home/ubuntu
,其中包含程序的类,则您(通常)根本不需要指定类路径。在这种情况下,只需运行该程序(即,将包含程序函数的类的名称传递main
给java
)。
例如,如果.class
包含您的方法的类的文件main
是/home/ubuntu/myapp/launch-myapp.class
,则只需运行:
java /home/ubuntu/myapp/launch-myapp
(请注意,您没有指定.class
后缀,因为它是隐含的。)
大多数 Java 程序由多个类组成,并且通常所有.class
文件都打包成一个.jar
文件。如果是这种情况,请java
使用该-jar
标志运行并指定其完整文件名。
例如,如果你的程序的类(包括包含的类main
)由文件提供/home/ubuntu/myapp/myapp.jar
,只需运行:
java -jar /home/ubuntu/myapp/myapp.jar
请注意,要使用 运行.jar
文件java -jar
,您需要做.jar
在文件名末尾指定扩展名;它是不是被认为是暗示。
更不常见的是,您可能确实想手动指定类路径。
为此,您必须指定类路径和还有您想要运行的 Java 程序(即包含其方法的类main
)。
例如,假设你想/home/bob/myapp.class
使用 classpath运行/home/ubuntu/myapp
。那么你可以运行:
java -cp /home/ubuntu/myapp /home/bob/myapp
/home/bob/myapp.jar
或者如果你使用该类路径运行:
java -cp /home/ubuntu/myapp -jar /home/bob/myapp.jar
您可能正在尝试设置默认类路径,以便在将来运行任何 Java 程序时使用(指定备用类路径时除外)。
如果你正在尝试这样做,则应设置CLASSPATH
环境变量。请参阅官方文件作为指出经过卡雷尔。
简而言之,您只需创建CLASSPATH
一个以分号分隔的目录列表,以便自动搜索。
有关设置的更多信息环境变量, 看这个问题和这个 Ubuntu 文档 wiki 页面。