java.lang.IllegalArgumentException - «другое» имеет другой корень

Я пишу приложение Java, используя Vertx. Я пытаюсь развернуть один из моих модулей, используя следующий код. Но я столкнулся с исключением IllegalArgumentException, которое не могу решить.

Часть моего основного класса:

System.out.println(System.getProperty("user.dir")
                + File.separator + "modules" + File.separator
                + "agents-0.0.1-SNAPSHOT-mod.zip");
        InputStream agf = new FileInputStream(System.getProperty("user.dir")
                + File.separator + "conf" + File.separator
                + "dbproperties1.json");
            String json = IOUtils.toString( agf );
            LOGGER.debug("db json:::"+json);
        JsonObject configprop =  new JsonObject(json);
        pm.deployModuleFromZip(System.getProperty("user.dir")
                + File.separator + "modules" + File.separator
                + "agents-0.0.1-SNAPSHOT-mod.zip", configprop, 1,
                new AsyncResultHandler<String>() {
                    public void handle(AsyncResult<String> asyncResult) {
                        LOGGER.debug("Deployment agnet ID dddd");
                        if (asyncResult.succeeded()) {
                            LOGGER.debug("Deployment agnet ID is "
                                    + asyncResult.result());
                        } else {
                            LOGGER.debug("Deployment agnet  ID is null "
                                    + asyncResult.result());
                            asyncResult.cause().printStackTrace();
                        }
                    }
                }); 
        agf.close();

В консоли ошибка такая:

java.lang.IllegalArgumentException: 'other' has different root
    at sun.nio.fs.WindowsPath.relativize(WindowsPath.java:392)
    at sun.nio.fs.WindowsPath.relativize(WindowsPath.java:44)
    at org.vertx.java.platform.impl.DefaultPlatformManager.setPathResolver(DefaultPlatformManager.java:1128)
    at org.vertx.java.platform.impl.DefaultPlatformManager.access$2000(DefaultPlatformManager.java:55)
    at org.vertx.java.platform.impl.DefaultPlatformManager$18.run(DefaultPlatformManager.java:1276)
    at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:171)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:353)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:366)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
    at java.lang.Thread.run(Thread.java:745)

Любая помощь в этом отношении будет оценена по достоинству.


person Satyajit Patnaik    schedule 13.04.2015    source источник
comment
new FileInputStream(System.getProperty("user.dir") + ... - это действительно работает?   -  person user253751    schedule 13.04.2015
comment
Кстати, длинные имена переменных вас не укусят. Все, что они сделают, это сделают ваш код более удобным для чтения.   -  person Fund Monica's Lawsuit    schedule 13.04.2015
comment
Возможно, вы захотите взглянуть на этот ответ: stackoverflow.com/questions/16299604/   -  person tddmonkey    schedule 13.04.2015
comment
immibis - Да, FileInputStream работает. Я развертываю еще два модуля, используя тот же синтаксис. Но у меня проблемы только с этим конкретным модулем.   -  person Satyajit Patnaik    schedule 13.04.2015
comment
QPaysTaxes - Приносим извинения! В спешке я написал тестовый код. Я просто скопировал это сюда. Я буду иметь в виду в следующий раз, чтобы дать правильные имена для переменных.   -  person Satyajit Patnaik    schedule 13.04.2015
comment
MrWiggles - я был по этой ссылке. Никак не решил мою проблему. Я работаю в Windows. И большинство решений для платформ Linux.   -  person Satyajit Patnaik    schedule 13.04.2015


Ответы (1)


Я нашел решение для своего случая.

Для проекта vertx в проекте будет файл mod.json. Он должен иметь следующий json.

{
  "main": "com.company.agent.Manager",
  "preserve-cwd": true
}

"preserve-cwd": true помогает.

person Satyajit Patnaik    schedule 14.04.2015