#java #c #api #twitter #twitter4j
#java #c #API #Twitter #twitter4j
Вопрос:
Я пытался скомпилировать и выполнить файл Java с C , но в настоящее время я получаю эту ошибку. Файл 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);
}
}
Я должен вызвать общедоступную статическую функцию void main из класса TwitterDataCrawler. Я предполагаю, что, поскольку класс действительно содержит функцию main, таргетинг на класс с аргументом должен сработать. Может ли кто-нибудь указать мне правильное направление?
Комментарии:
1. С какой стати вы делаете это на C ?? И вы должны понимать самые основы командной строки Java, прежде чем что-то автоматизировать (подсказка: вы ищете свой скомпилированный класс в каталоге с именем «TwitterDataCrawler.java »
2. похоже, что проблема не в вызове
system
, а в параметрах, которые вы ему передаете. Работают ли эти команды, если вы вводите их вручную в командной строке?3. Я понимаю, что вы имеете в виду. @GyroGearless Изменил код на: system(«java -cp TwitterDataCrawler»); Выдал мне это сообщение: imgur.com/a/wNwcolI Мне все еще чего-то не хватает? Да, я впервые сталкиваюсь с командной строкой Java, мне следовало сначала ознакомиться с ней, прежде чем начинать.
4. Затем продолжайте и проверьте, как скомпилировать java-код из командной строки, ваша обновленная команда пытается вызвать java без основного класса, просто указав путь к классу для недопустимого файла с именем «TwitterDataCrawler». Кроме того, я с Gyro: какого черта вы используете C для вызова java? Если вам просто нужна простая программа, которая автоматизирует этот процесс за вас, вы можете просто добавить команды оболочки в bash или пакетный файл и запустить это вместо этого.
Ответ №1:
Решено!
system(javac -cp twitter4j-core-4.0.7.jar TwitterDataCrawler.java);
system(java -cp .;twitter4j-core-4.0.7.jar TwitterDataCrawler);
Поскольку класс, созданный с использованием javac, зависит от jar API (оба находятся в одном каталоге), «.;twitter4j-core-4.0.7.jar «включен для выполнения TwitterDataCrawler.