Использование P4Package (Java) из приложения Java для проверки каталога Perforce

В веб-приложении, которое я пишу, пользователь должен ввести путь в репозиторий Perforce для узла, который он вводит. Предполагается, что приложение проверяет, существует ли указанный каталог в репо.

У меня есть библиотека P4Package (p4.jar), и я настраиваю ее достаточно правильно, чтобы она работала почти для всего, ЗА ИСКЛЮЧЕНИЕМ этой проверки каталога. Я создаю DirEntry (из p4.jar), используя настроенный Env и путь, но когда я вызываю DirEntry.sync (), он выдает неверную команду. Где я хочу, чтобы он выдал команду:

p4 [информация о конфигурации] dirs аргумент_каталога <- использование команды dirs для проверки каталога

Вместо этого он выдает:

p4 [информация о конфигурации] dirs аргумент_каталога% 1 <- обратите внимание на посторонние% 1

Что всегда терпит неудачу, поскольку ни один из каталогов не имеет% 1 в конце.

Любая помощь? Есть ли другой способ проверить, существует ли каталог с помощью этого пакета?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
612
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Похоже, в команде sync есть ошибка в отношении записей каталога и команды. Мое предложение - просто выполнить команду самостоятельно, используя командную строку perforce, поскольку она должна быть настроена в любом случае, чтобы использовать библиотеку java.

Process p = Runtime.getRuntime().exec("p4 dirs " + directory_argument);
BufferedReader stdOut = new BufferedReader(new InputReader(p.InputStream()));
//Read the output of the command and process appropriately after this

Да, я понимаю, что вы говорите, но это существует уже давно, и мне трудно поверить, что эта ошибка существует. У меня есть исходный код для P4Package, и я могу просто изменить его, чтобы не вставлять% 1 и не переупаковывать банку, но я должен предположить, что он существует по какой-то причине.

billjamesdev 18.09.2008 00:29
Ответ принят как подходящий

Итак, в коде, который я использовал, была ошибка, требовавшая от меня внесения изменений и проверки кода в моем репозитории.

Однако с тех пор Perforce разработала свою собственную оболочку Java для клиента P4, которая работает намного лучше. Я бы попробовал.

Вместо этого я бы попробовал другую библиотеку, P4Java:

http://tek42.com/p4java

P4Java намного новее, и я обнаружил, что он работает намного лучше, чем P4Package. Он используется в проекте Hudson, и я видел его в источнике Fisheye, хотя я не уверен, используют ли они его или нет.

Другие вопросы по теме