首页 > 解决方案 > 使用命令行运行 Java 类

问题描述

我有 4 个 Java 数据:

Common.java
Constants.java
KeywordsEditor.java
ExecutionEngine.java (There is here a Main-Method) 

我已经使用 Project-Directory (C:\ProjectDemo\src\main\java\ValueInput) 中的此命令在命令行中成功编译

javac -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar" *.java 

我在同一个目录中有 4 个 Data .class。现在我想用这段代码运行它们:

java -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar" ExecutionEngine 

但我得到了错误:

Error: ExecutionEngine main class could not be found or loaded 

``` 
I've tried with some same code else:
```
java -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;libs\*;selenium-server-standalone-3.141.59.j‌​ar" ExecutionEngine 

java -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;libs/*;selenium-server-standalone-3.141.59.j‌​ar" ExecutionEngine 
```

And some more, but they don't work. Can somebody help me?

标签: javaseleniumselenium-webdriver

解决方案


更新

从您的评论中,我了解到您package ValueInput;ExecutionEngine.java. -d因此,您应该在编译时使用该开关:

javac -d . -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar" *.java

该选项-d .要求编译器将生成的类文件放在当前目录中。现在,如果您ls在 Mac/Unix 或dirWindows 中使用该命令,您将看到一个目录ValueInput已创建,并且所有.class文件都已放置在该目录中。只需使用命令即可了解有关开关的更多信息javac

为了执行ExecutionEngine.class,您现在可以使用以下命令:

java -cp ".;C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar" ValueInput.ExecutionEngine 

您还可以检查此答案以获得类似的解决方案。

旁注:您应该遵循Java 命名约定。按照惯例,包的名称应该类似于value.input.

原始答案

问题的根本原因是仅使用带有-cp. 你错过了意识到你ExecutionEngine.class不在罐子里;而是在当前目录中,用点 ( .) 表示,您错过了将其包含在类路径中。

因此,正确的命令将是:

java -cp ".;C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar" ExecutionEngine 

.你把当前目录放在哪里都没有关系,例如以下内容也适用于你:

java -cp "C:\Users\ABC\selenium-java-2.48.2\selenium-2.48.2\selenium-java-2.48.2.jar;selenium-server-standalone-3.141.59.j‌​ar;." ExecutionEngine 

Mac 的注意事项:

在 Mac 中用于此目的的分隔符是:代替;eg

javac -cp mysql-connector-java-5.1.49.jar MysqlDemo.java
java -cp mysql-connector-java-5.1.49.jar:. MysqlDemo

Java-11 以后的注意事项: Java-11 允许在不编译的情况下启动单文件源代码程序,例如

java -cp mysql-connector-java-5.1.49.jar MysqlDemo.java

您可以从这篇文章中了解更多信息。


推荐阅读