java - 使用命令行运行 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.jar" *.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.jar" 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.jar" 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.jar" ExecutionEngine
```
And some more, but they don't work. Can somebody help me?
解决方案
更新
从您的评论中,我了解到您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.jar" *.java
该选项-d .
要求编译器将生成的类文件放在当前目录中。现在,如果您ls
在 Mac/Unix 或dir
Windows 中使用该命令,您将看到一个目录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.jar" 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.jar" 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.jar;." 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
您可以从这篇文章中了解更多信息。
推荐阅读
- amazon-ses - Mautic 和 Amazon SES 集成问题
- java - JAXB 与 IDEA + Android 插件上的 dataBinding 冲突
- angular - 错误类型错误:“this.profileService.getUserProfile(...) 未定义”
- angular - keyup 在几个输入字段上输入
- node.js - NodeJs 是否需要公共文件权限才能访问文件?
- node.js - 如何使用 jest 模拟链式函数调用?
- kubernetes - 如何通过 kubernetes 安装 kubernetes
- javascript - 表格无法识别来自 javascript 的数据?
- neural-network - 在验证和测试集中是否需要初始化 lstm 隐藏状态?或者只是将其重置为零
- python - 将链接矩阵转换为邻接矩阵