Внедрение пролога в Java-справку - PullRequest
1 голос
/ 20 мая 2011

| У меня есть фильтр, написанный на прологе, который я хотел бы встроить в мой веб-сервис. Я использую JAVA на своем бэкэнде, я хотел бы добавить фильтр здесь. Я использую tomcat в качестве сервера приложений. Может кто-нибудь предложить хороший способ. Я знаю о JPL, печально то, что я не могу заставить его работать.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Всегда есть tuProlog , если вы хотите встроить свой движок Prolog в саму Java.Другие альтернативы включают в себя аналогичный по концепции JLog или более компилятивный Prolog Cafe .

Другая альтернатива, возможно, немного более отдаленная (это, безусловно, потребуетнемного усилий по переносу с вашей стороны) использование языка Mercury - он имеет очень синтаксис Prolog-ish, но на самом деле не является Prolog - который включает, помимо прочего, бэкэнд Java и соразмерныйJava FFI.

0 голосов
/ 20 мая 2011

Не совсем очевидно, что вы пытаетесь сделать, поэтому я сделаю предположение, что вы действительно просто пытаетесь понять, как запустить код Prolog и получить результаты обратно.

В этом случае Java предоставляет классы Process :

Методы ProcessBuilder.start () и Runtime.exec создают собственный процесс и возвращают экземпляр подклассаПроцесс, который можно использовать для управления процессом и получения информации о нем.Класс Process предоставляет методы для выполнения ввода из процесса, выполнения вывода в процесс, ожидания завершения процесса, проверки состояния выхода процесса и уничтожения (уничтожения) процесса.

Возможно, более полезной будет ProcessBuilder : она позволяет вам создать полную рабочую среду (включая переменные среды), которая близко имитирует командную строку, с которой вы, вероятно, тестируете сейчас.Цитирование из Javadoc:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();

Помните, что если вы хотите передать информацию в созданный вами процесс, вам нужно использовать Process.getOutputStream () (это будет вашвывод на вход Пролога).Аналогично, если вы хотите получить выходные данные и ошибки Пролога, вам нужно использовать Process.getInputStream() и Process.getErrorStream().

В прошлом я перепутал эти входные и выходные потоки и все еще хотел бы иметьэти часы моей жизни вернулись ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...