【发布时间】:2019-08-18 00:56:51
【问题描述】:
我一直在尝试从 C++ 编译和执行一个 java 文件,但我目前遇到了这个错误。在 java 中单独执行时,java 文件可以正常工作。
这是收到的错误代码:
Error: Could not find or load main class TwitterDataCrawler
Caused by: java.lang.ClassNotFoundException: TwitterDataCrawler
在我的 C++ 文件中:
(TwitterDataCrawler.java 是我希望运行的文件 \twitter4j-core-4.0.7.jar 是运行所需的 twitter API)
int main()
{
system("javac -cp twitter4j-core-4.0.7.jar TwitterDataCrawler.java");
system("java -cp TwitterDataCrawler.java TwitterDataCrawler arg1");
return 0;
}
我的 java 文件的结构如下所示:
public class TwitterDataCrawler {
public TwitterDataCrawler() {
}
public static void viewAccident(int x) throws TwitterException, IOException{
}
public static void main(String[] args) throws TwitterException, IOException {
viewAccident(5000);
}
}
我必须从 TwitterDataCrawler 类中调用 public static void main 函数。我假设由于该类确实包含一个 main 函数,因此使用参数定位该类应该可以工作。有人能指出我正确的方向吗?
【问题讨论】:
-
你到底为什么要用 C++ 做这个??你应该在自动化之前了解java命令行的基础知识(提示:你正在一个名为“TwitterDataCrawler.java”的目录中搜索你的编译类
-
这似乎不是调用
system的问题,而是您传递给它的参数的问题。如果您在命令行上手动键入这些命令,这些命令是否有效? -
我明白你的意思。 @GyroGearless 将代码更改为:system("java -cp TwitterDataCrawler");给我这个消息:imgur.com/a/wNwcolI 我还缺少什么吗?是的,这是我第一次接触 java 命令行,我应该在开始之前先阅读它。
-
然后继续检查如何从命令行编译 java 代码,您更新的命令尝试在没有主类的情况下调用 java,只是将类路径设置为名为“TwitterDataCrawler”的无效文件。除此之外,我和 Gyro 在一起:你为什么要使用 C++ 来调用 java?如果您只想要一个简单的程序来为您自动执行此过程,您可以将 shell 命令添加到 bash 或批处理文件中并运行它。
标签: java c++ api twitter twitter4j