Вам действительно нужно выполнить его в оболочке (например, нужно ли вам расширять оболочку таких вещей, как ~
или *
и т. Д.)?Если нет, вы можете вызвать ln
напрямую:
Process p =
Runtime.getRuntime()
.exec(new String[]{"/bin/ln","-s","dir1/dir2", "my\\ dir/dir2"});
Если вам действительно нужна оболочка, попробуйте это (может потребоваться небольшая настройка в зависимости от того, как оболочка обрабатывает кавычки):
Process p =
Runtime.getRuntime()
.exec(new String[]{"/bin/sh", "-c", "ln -s \"dir1/dir2\" \"my\\ dir/dir2\""});
Редактировать:
У меня сложилось впечатление, что второй путь имеет буквальную обратную косую черту.Если не предполагается удалить \\
из строковых литералов выше.