Оболочка Roo не может установить пакет jdbc из-за зависимостей slf4j
Я застрял, пытаясь настроить проект DRBE с текущей версией Roo 1.3.1. Я также настроил проект в последней версии STS на последнем выпуске Eclipse, все новые установки, чтобы избежать конфликтов. Затем я устанавливаю через оболочку Roo JPA, пользователя, базу данных и пароль, а затем пытаюсь получить схему базы данных. Ру жалуется на отсутствие надлежащего драйвера jdbc и предлагает скачать его. Я делаю это, но, к сожалению, Roo не может установить его из-за некоторых неудовлетворенных зависимостей с slf4j-nop и slf4j-api.
Я также пытался установить действительно ли зависимости, но они оба имеют циклические зависимости друг от друга, что делает невозможным установку драйвера jdbc (по крайней мере, на данный момент)
roo> jpa setup --provider HIBERNATE --database MYSQL
roo> database properties set --key database.url --value jdbc:mysql://localhost:3306/dbdb
roo> database properties set --key database.password --value $$$$
roo> database properties set --key database.username --value uuuu
roo> database reverse engineer --package ~.model --schema PUBLIC --includeNonPortableAttributes
Located add-on that may offer this JDBC driver
1 found, sorted by rank; T = trusted developer; R = Roo 1.3 compatible
ID T R DESCRIPTION -------------------------------------------------------------
01 Y Y 5.1.18.0001 #jdbcdriver driverclass:com.mysql.jdbc.Driver. This...
--------------------------------------------------------------------------------
[HINT] use 'addon info id --searchResultId ..' to see details about a search result
[HINT] use 'addon install id --searchResultId ..' to install a specific search result, or
[HINT] use 'addon install bundle --bundleSymbolicName TAB' to install a specific add-on version
JDBC driver not available for 'com.mysql.jdbc.Driver'
roo> addon install id --searchResultId 01
roo> Target resource(s):
-------------------
Spring Roo - Wrapping - mysql-connector-java (5.1.18.0001)
Required resource(s):
---------------------
slf4j-nop (1.6.1)
slf4j-api (1.6.1)
Deploying...
done.
Но это действительно не развернуло ничего или решило зависимости. Я нахожусь в цикле, где он просит, чтобы я устанавливал пакет jdbc каждый раз, когда я пытаюсь перепроектировать базу данных. Он просит меня установить пакет. Я делаю. Он говорит, что развернул комплект, но это не так. Я повторяю... и так далее.
Если я запускаю старую оболочку 1.2.5.RELEASE Roo, я случайно установил, что все это работает, даже не прося меня установить какой-либо пакет на Roo (наверное, я уже делал это раньше)
Я также пытался установить с ОСГИ
roo> osgi obr url add --url http://spring-roo-repository.springsource.org/repository.xml
roo> osgi obr start --bundleSymbolicName org.springframework.roo.wrapping.mysql-connector-java
Но это вызывает у меня исключение с жалобой на MalformedURLException, потому что в имени пакета нет протокола...
org.osgi.framework.BundleException: Unable to cache bundle: org.springframework.roo.wrapping.mysql-connector-java
at org.apache.felix.framework.Felix.installBundle(Felix.java:2870)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:138)
at org.apache.felix.gogo.command.Basic.start(Basic.java:724)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)
at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:92)
at org.springframework.roo.felix.FelixDelegator.perform(FelixDelegator.java:234)
at org.springframework.roo.felix.FelixDelegator.obrStart(FelixDelegator.java:167)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.roo.process.manager.ProcessManagerHostedExecutionStrategy$1.callback(ProcessManagerHostedExecutionStrategy.java:47)
at org.springframework.roo.process.manager.internal.DefaultProcessManager.doTransactionally(DefaultProcessManager.java:325)
at org.springframework.roo.process.manager.internal.DefaultProcessManager.execute(DefaultProcessManager.java:71)
at org.springframework.roo.process.manager.ProcessManagerHostedExecutionStrategy.execute(ProcessManagerHostedExecutionStrategy.java:44)
at org.springframework.roo.shell.AbstractShell.executeCommandImpl(AbstractShell.java:242)
at org.springframework.roo.shell.AbstractShell.executeCommand(AbstractShell.java:149)
at org.springframework.roo.shell.eclipse.EclipseShell.executeCommand(EclipseShell.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:202)
at org.springframework.ide.eclipse.core.java.ClassUtils.invokeMethod(ClassUtils.java:137)
at org.springframework.ide.eclipse.core.java.ClassUtils.invokeMethod(ClassUtils.java:97)
at org.springframework.roo.shell.eclipse.Bootstrap.execute(Bootstrap.java:90)
at org.springframework.ide.eclipse.roo.ui.internal.RooShellTab$CommandJob.run(RooShellTab.java:588)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.net.MalformedURLException: no protocol: org.springframework.roo.wrapping.mysql-connector-java
at java.net.URL.<init>(URL.java:586)
at org.apache.felix.framework.util.SecureAction.createURL(SecureAction.java:254)
at org.apache.felix.framework.cache.JarRevision.initialize(JarRevision.java:148)
at org.apache.felix.framework.cache.JarRevision.<init>(JarRevision.java:77)
at org.apache.felix.framework.cache.BundleArchive.createRevisionFromLocation(BundleArchive.java:878)
at org.apache.felix.framework.cache.BundleArchive.reviseInternal(BundleArchive.java:550)
at org.apache.felix.framework.cache.BundleArchive.<init>(BundleArchive.java:153)
at org.apache.felix.framework.cache.BundleCache.create(BundleCache.java:277)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2866)
... 38 more
java.net.MalformedURLException: no protocol: org.springframework.roo.wrapping.mysql-connector-java
Я также попытался очистить папку.m2 на случай, если в локальном репозитории maven были испорчены версии чего-то... но безуспешно. Теперь у него есть релиз 1.7.5 этих библиотек slf4j, на которые жалуется оболочка Roo и просит выпустить 1.6.1
Я использовал Springsource и Roo в прошлых проектах, чтобы ускорить мою разработку, но это совсем не ускоряет меня...
Заранее спасибо всем, кто хочет прочитать это:)
ПРИМЕЧАНИЕ. Единственный способ заставить его работать - вручную загрузить драйвер jdbc с веб-сайта MySQL, распаковать его и отправить в оболочку Roo через osgi.
roo> osgi start --url file:///Users/..../Downloads/mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar
Правда, я могу работать сейчас, но разве Spring и Spring Roo не были фреймворком и инструментом, ускоряющим цикл разработки? Я что-то не так понял? Является ли соединение JDBC таким необычным?
Я все еще хочу знать, есть ли лучший / более простой / автоматический способ сделать это.