Не удается загрузить основной класс при компиляции и запуске файла Java с использованием C

#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.