Я разрабатываю приложение C#, у которого есть доступ к консоли для запуска java-команды и выполнения конкретной jar, но когда я запускаю программу, исполняемый файл jar генерирует его файлы на выходе программы, например журналы и но я хочу запустить jar, который уже находится в конкретной папке со своими файлами. Проблема в том, что я пробовал много аргументов java, но сгенерированные выходные файлы из jar каждый раз обращаются к моей папке Debug из моего проекта visual studio. Hope кто меня понял, я очень смущен и извиняюсь за свой английский, я бразильский На данный момент, спасибо за вашу поддержку!Проблемы с файловыми классами Jar file
ответ
Я могу только догадываться, потому что строки кода отсутствуют, что вы используете для вызова java-программы из вашей программы на C#. Также неясно, чего именно вы пытаетесь достичь. Решите между изменением «текущей рабочей директории» в дочернем или в основном процессе.
дочерний процесс
Я предполагаю, что вы хотите, чтобы выполнить что-то вроде этого java -jar path\to\some.jar
используя код, подобный этому:
using System.Diagnostics;
//...
ProcessStartInfo p = new ProcessStartInfo();
p.Arguments = new string[]{"-jar", "path\to\some.jar";
p.FileName = "java.exe";
p.WindowStyle = ProcessWindowStyle.Hidden;
p.CreateNoWindow = true;
using (Process proc = Process.Start(start))
{
proc.WaitForExit();
}
адаптировано из here
Тогда вы можете просто добавить эту строку
p.WorkingDirectory = "path\to";
адаптировано из here
для настройки вашего дочернего процесса, охваченного например p
с конкретной текущей рабочей директории. Это установит текущий рабочий каталог для вызова вашего дочернего процесса java
.
основной процесс
Чтобы установить текущий рабочий каталог для окружающей основного процесса добавьте эту строку в программе:
System.IO.Directory.SetCurrentDirectory("some\other\path");
MSDN Документация для SetCurrentDirectory
Вы должны установить текущую работу который ожидает ожидаемая программа перед ее вызовом. –
да, я просто думаю об этом, но как я установил рабочий каталог для банки? Я попытался с аргументом -cp, но результата нет –
Вы должны сделать это в окружении, где вы вызываете команду java. –