Play2War - не удалось создать Vfs.Dir из URL

Я пытаюсь развернуть приложение Play 2.1.1 на Websphere 8.5.5 с помощью Play2War. Приложение отлично работает при запуске с play ~run но когда я развертываю войну на Websphere, я получаю это сообщение об ошибке:

org.reflections.ReflectionsException:
    could not create Vfs.Dir from url, no matching UrlType was found
    [wsjar:file:/C:/apps/websphere/wlp/usr/servers/server_kev/workarea/org.eclipse.osgi/bundles/45/data/cache/com.ibm.ws.app.manager_gen_0fdbabb2-5ae7-4075-bda1-136e52319906/.cache/WEB-INF/lib/playbackend.jar!/]

Кто-нибудь еще видел эту проблему?

3 ответа

Если вы еще не вышли из коробки с вашей текущей библиотекой Reflections, просто добавьте Vfs UrlType:

Vfs.addDefaultURLTypes(
    new Vfs.UrlType() {
        public boolean matches(URL url) {
           return url.getProtocol().equals("vfs");
        }

        public Vfs.Dir createDir(URL url) {
            return DefaultUrlTypes.jarUrl.createDir(url);
        }

Проверьте в последних источниках

Я бы получил это даже с последней версией библиотеки Reflections. В конце концов я обнаружил, что именно так я строил свою (толстую) банку (или, в вашем случае, войну). У меня был ant-скрипт (изначально сгенерированный Eclipse), который копировал libs как есть в jar и использовал какой-то загрузчик. Вместо этого я сказал ему распаковать libs в мою банку, и это решило проблему. Не уверен, почему это происходит, когда они упакованы как есть в банку / войну. Я надеюсь, что это помогает кому-то.

Если вы используете Subcontext Deployment, убедитесь в conf/application.conf, вы добавляете:

application.context=/KevSheedyApp/

Вы можете назвать свою войну как KevSheedyApp.war,

Вы должны иметь возможность получить доступ к вашему приложению через http://host:port/KevSheedyApp/bla/bla

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