Как превратить вашу Java-программу без графического интерфейса в консольную программу

Я не знаю, как это описать хорошо, но я попытаюсь. Хорошо, я хочу иметь возможность создать свою Java-программу, чтобы при открытии она выглядела и работала точно так же, как в консоли. Таким образом, он читает класс Scanner и печатает нормально, и делает все, что делал бы, если бы был в консоли. Я искал вокруг для этого и ничего не нашел. Я могу довольно легко создать java-программу с графическим интерфейсом, но я бы предпочел иметь терминал, консольную программу, которая работает точно так же, как java-консоль, спасибо.


person Robert Cardona    schedule 21.04.2010    source источник
comment
Вы пробовали Пуск › Выполнить › cmd?   -  person Tim Bender    schedule 22.04.2010
comment
Что ты имеешь в виду? вам нужна программа на основе терминала, которая считывает ввод с клавиатуры терминала и выводит вывод на терминал (stdout)??   -  person ring bearer    schedule 22.04.2010
comment
Вы ищете какой-нибудь... эмулятор терминала?   -  person Mike Daniels    schedule 22.04.2010
comment
Что-то вроде эмулятора терминала, я знаю, что в С++, когда вы создаете программу, она автоматически превращается в программу типа терминала, но я не нашел способа сделать это так в java.   -  person Robert Cardona    schedule 22.04.2010
comment
Тим, можешь поподробнее объяснить? когда я компилирую свои классы, я получаю файл jar, который ничего не делает, когда я нажимаю на него, что я думаю нормально, потому что это не графический интерфейс   -  person Robert Cardona    schedule 22.04.2010
comment
Я не могу разобраться в этом вопросе...   -  person brice    schedule 23.09.2010


Ответы (2)


Возможно, вы ищете стандартные элементы ввода и вывода java.lang.System класс:

class HelloWorld {

  public static void main(String... argv) {
    System.out.println("Hello, World!");
  }

}

Для обработки ввода вы можете использовать Scanner на стандартном вводе:

Scanner scanner = new Scanner(System.in);

Если вы хотите получить что-то особенное, вы можете напечатать часть своего вывода в System.err, который является PrintStream таким же, как System.out.


Из комментария «когда я компилирую свои классы, я получаю файл jar, который ничего не делает, когда я нажимаю на него, что я считаю нормальным, потому что это не графический интерфейс», я думаю, что ваша проблема связана с проблемой операционной системы (Windows?), не проблема с Явой.

Windows отображает действие «Открыть» для файлов JAR для запуска с помощью javaw.exe, который не создает консоль. Вам нужно либо изменить ассоциацию файлов по умолчанию на каждой машине, либо создать что-то вроде пакетного файла, который переопределяет это поведение по умолчанию.

Вы можете написать две программы: первая — ваше фактическое «консольное» Java-приложение, а другая — просто оболочка, которая использует Runtime.exec() для создания консоли Windows (cmd) и запускает в ней первую программу.

Существуют также проекты с открытым исходным кодом (проверьте Sourceforge), которые заключают ваш JAR в исполняемый файл Windows.

person erickson    schedule 21.04.2010
comment
лол, я знаю, как это сделать, я использую это в своей программе, но мне нужно сделать так, чтобы скомпилированный jar-файл этого работал точно так же, как консоль, имеет смысл? - person Robert Cardona; 22.04.2010
comment
Ты имеешь в виду, что хочешь написать консоль? - person erickson; 22.04.2010
comment
Если у них нет встроенной функции в Java, которая может это сделать, то я полагаю, что хочу написать консоль, но надеюсь, что упустил из виду что-то, что есть в Java, что сэкономит мне время на это. - person Robert Cardona; 22.04.2010
comment
Чтобы объяснить, к чему я стремлюсь: я пишу программу, которая получает http-ссылку и отправляет ее через почтовые данные на сайт, но я хочу делать сотни ссылок за раз, что отлично работает, используя метод сканера nextLine(), я можно просто опубликовать 100 или 200 ссылок в java-консоли, и она автоматически их отсортирует. Я хочу избежать использования текстового поля графического интерфейса для ввода ссылок, что затем приведет к тому, что все ссылки будут одной длинной строкой, что заставит меня написать больше кода для разделения каждой ссылки по одной и отправки их таким образом, надеюсь, что это поможет . - person Robert Cardona; 22.04.2010
comment
Эриксон, спасибо, я пошел на sourceforge и получил Launch4j Executable Wrapper, я завернул свою банку в консольный exe, и это сработало. - person Robert Cardona; 22.04.2010
comment
Если это сработало, вы должны проголосовать и принять его ответ (стрелка вверх и галочка слева от его ответа). - person Lawrence Johnston; 22.04.2010
comment
Я не могу стрелку вверх, но я проверил это, спасибо, я новенький, но я плохо разберусь, если это так, этот сайт потрясающий, я очень быстро получил много ответов! - person Robert Cardona; 22.04.2010

На основании вашего комментария:

но я хочу делать сотни ссылок за раз, что отлично работает с использованием метода сканера nextLine(), я могу просто опубликовать 100 или 200 ссылок в консоли Java, и он автоматически их отсортирует.

Я предполагаю, что вы хотите, это пакетная обработка. У вас может быть 100 или 200 ссылок в текстовом файле, по одной на строку. И затем ваша программа Java:

import java.io.*;

public class Batch{
    public static void main(String args[]){
    try{
        FileInputStream fstream = new FileInputStream("sample.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
        String line;

        while((line = br.readLine()) != null){
            //Do something with your line
            System.out.println(line);
        }
        in.close(); 
    }catch(IOException ioe){
        System.err.println(ioe.getMessage());
    }
}

}

Вы компилируете эту программу, открываете консоль и запускаете ее:

java Batch

Он читает ваш файл sample.txt и для каждой строки что-то делает, в данном случае выводит его на консоль.

person Cesar    schedule 21.04.2010
comment
Да, я думал об этом, если я решу в будущем превратить его в графический интерфейс, я буду использовать что-то вроде этого. например, когда я вставляю ссылки в текстовую область, текстовая область сохраняет весь текст во временный текстовый файл и загружает ссылку таким образом. Я просто хотел посмотреть, можно ли сделать java-консоль, такую ​​​​как scilab или что-то в этом роде. спасибо. - person Robert Cardona; 22.04.2010