【发布时间】:2015-06-01 11:49:47
【问题描述】:
我正在尝试使用 gradle 构建文件和 Benjamin Muschko (https://github.com/bmuschko/gradle-cargo-plugin) 的 Gradle Cargo 插件在远程 JBoss 5.1.0.GA 容器上部署一个 war 文件。
在一个非常简单的项目上启动 cargoDeployRemote 任务时,我遇到了 java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory。 帖子about Cargo deployment on a JBoss 5.1.0.GA using Maven plugin 帮助我设置了依赖项。 例如,缺少的类 NamingContextFactory 也在 jboss-as-varia 依赖项中定义。显然,我一定错过了什么。
该项目只是一个包含以下 Gradle 脚本的文件夹,仅此而已。 我必须补充一点,我从 linux 虚拟机(运行 ArchLinux 的 virtualbox 来宾)内部运行构建脚本,并且我想远程部署在主机上运行的 JBoss 5.1.0.GA 服务器上。我可以通过访客的网关地址(10.0.2.2)访问 JBoss,所以我想这不是这里的问题。
我尝试提供最简单的 gradle 构建文件来显示这个问题。 关于应该做些什么来完成这项工作的任何线索?任何帮助表示赞赏。
这是我的 build.gradle 文件:
apply plugin: 'war'
apply plugin: 'com.bmuschko.cargo'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.bmuschko:gradle-cargo-plugin:2.1.1'
}
}
repositories {
mavenCentral()
dependencies {
providedCompile 'org.jboss.jbossas:jboss-as-jbossas-remoting:5.1.0.GA'
providedCompile 'org.jboss.jbossas:jboss-as-client:5.1.0.GA'
providedCompile 'org.jboss.jbossas:jboss-as-varia:5.1.0.GA'
providedCompile 'org.jboss.integration:jboss-profileservice-spi:5.1.0.GA'
}
}
cargo {
containerId = 'jboss51x'
port = 8080
remote {
username = "admin"
password = "admin"
hostname = "10.0.2.2"
}
deployable {
context = 'myawesomewebapp'
}
}
这是显示错误的“gradle cargoDeployRemote -i”的输出:
执行任务 ':cargoDeployRemote'(最新检查耗时 0.002 秒) 由于:Task.upToDateWhen 为假。容器 ID = jboss51x 可部署的工件 = [/home/gerald/testapp/build/libs/testapp.war] 启动远程容器“JBoss 5.1.x”的“部署”操作 'http://10.0.2.2:8080' 容器属性 = [:] :cargoDeployRemote 失败:cargoDeployRemote(线程[守护进程线程 14,5,main]) 完全的。耗时 0.588 秒。
FAILURE:构建失败并出现异常。
- 出了什么问题:任务“:cargoDeployRemote”执行失败。 org.codehaus.cargo.container.ContainerException:创建失败 具有实现类的部署程序 org.codehaus.cargo.container.jboss.JBoss51xRemoteDeployer 用于 参数(容器 [id = [jboss51x]],部署器类型 [远程])。
这里是个例外:
Caused by: org.codehaus.cargo.container.ContainerException: Failed to create deployer with implementation class org.codehaus.cargo.container.jboss.JBoss51xRemoteDeployer for the parameters (container [id = [jboss51x]], deployer type [remote]).
at org.codehaus.cargo.generic.spi.AbstractGenericHintFactory.createImplementation(AbstractGenericHintFactory.java:156)
at org.codehaus.cargo.generic.spi.AbstractIntrospectionGenericHintFactory.createImplementation(AbstractIntrospectionGenericHintFactory.java:93)
at org.codehaus.cargo.generic.deployer.DefaultDeployerFactory.createDeployer(DefaultDeployerFactory.java:140)
at org.codehaus.cargo.generic.deployer.DefaultDeployerFactory.createDeployer(DefaultDeployerFactory.java:160)
at org.codehaus.cargo.ant.CargoTask.executeActions(CargoTask.java:758)
at org.codehaus.cargo.ant.CargoTask.execute(CargoTask.java:577)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
... 70 more
Caused by: java.lang.reflect.InvocationTargetException
at org.codehaus.cargo.generic.deployer.DefaultDeployerFactory.createInstance(DefaultDeployerFactory.java:244)
at org.codehaus.cargo.generic.deployer.DefaultDeployerFactory.createInstance(DefaultDeployerFactory.java:42)
at org.codehaus.cargo.generic.spi.AbstractGenericHintFactory.createImplementation(AbstractGenericHintFactory.java:150)
... 77 more
Caused by: org.codehaus.cargo.util.CargoException: Cannot locate the JBoss connector classes! Make sure the required JBoss JARs (or Maven dependencies) are in CARGO's classpath.
More information on: http://cargo.codehaus.org/JBoss+Remote+Deployer
at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.<init>(JBoss5xRemoteDeployer.java:161)
at org.codehaus.cargo.container.jboss.JBoss51xRemoteDeployer.<init>(JBoss51xRemoteDeployer.java:41)
... 80 more
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)
at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315)
at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068)
at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.<init>(JBoss5xRemoteDeployer.java:156)
... 81 more
【问题讨论】:
-
您的 repositories.dependencies.providedCompile 似乎放错了位置。这些可能应该是 buildscript.dependencies.classpath 。那就是说我对 java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory 有同样的问题,如果您分享您在此处找到的任何答案,将不胜感激。
标签: gradle dependencies jboss5.x cargo