winrm4j 0.4.0, неудовлетворенные зависимости во время выполнения с использованием maven
Я создал очень простое приложение Maven CLI в Java 8, добавив эту зависимость:
<dependency>
<groupId>io.cloudsoft.windows</groupId>
<artifactId>winrm4j</artifactId>
<version>0.5.0</version>
</dependency>
Он содержит этот код:
String h = "10.10.10.10";
String s = "Showroom_K2";
String u = "adminuser";
String p = "password";
WinRmClientContext context = WinRmClientContext.newInstance(); WinRmTool.Builder builder = WinRmTool.Builder.builder(h, u, p); builder.setAuthenticationScheme(AuthSchemes.NTLM );
builder.port(5985); builder.useHttps(false);
//builder.disableCertificateChecks(true);
builder.context(context);
WinRmTool tool = builder.build();
List<String> cmds = new ArrayList<>();
cmds.add("$processes = Get-WmiObject Win32_Process -Filter \"name = 'java.exe' and commandline like '%SERVICES eq " + s + "%'\"");
cmds.add("$processes.Path");
WinRmToolResponse response = tool.executePs(cmds);
Если я выполняю этот код из Eclipse, я получаю эту ошибку в последней инструкции:
dic 15, 2017 6:04:46 PM org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
INFO: Creating Service {http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd}WinRmService from WSDL: jar:file:/C:/Users/vve/.m2/repository/io/cloudsoft/windows/winrm4j-client/0.5.0/winrm4j-client-0.5.0.jar!/wsdl/WinRmService.wsdl
Exception in thread "main" java.lang.NoSuchFieldError: REFLECTION
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:93)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:473)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:319)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1170)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:145)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:344)
at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:342)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.cxf.common.jaxb.JAXBContextCache.createContext(JAXBContextCache.java:342)
at org.apache.cxf.common.jaxb.JAXBContextCache.getCachedContextAndSchemas(JAXBContextCache.java:243)
at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:472)
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:327)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:425)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:527)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:262)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:157)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:93)
at io.cloudsoft.winrm4j.client.WinRmClient.doCreateServiceWithBean_Part1(WinRmClient.java:622)
at io.cloudsoft.winrm4j.client.WinRmClient.doCreateServiceWithBean(WinRmClient.java:611)
at io.cloudsoft.winrm4j.client.WinRmClient.createService(WinRmClient.java:518)
at io.cloudsoft.winrm4j.client.WinRmClient.getService(WinRmClient.java:502)
at io.cloudsoft.winrm4j.client.WinRmClient.command(WinRmClient.java:316)
at io.cloudsoft.winrm4j.winrm.WinRmTool.executeCommand(WinRmTool.java:243)
at io.cloudsoft.winrm4j.winrm.WinRmTool.executePs(WinRmTool.java:269)
at com.klopotek.core.liveaid.LiveAidCLI.main(LiveAidCLI.java:99)
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [util.c:840]
Но, если собрать приложение через maven (mvn clean install), я получаю эту ошибку по той же инструкции:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/soap/SOAPFaultException
at io.cloudsoft.winrm4j.winrm.WinRmTool.executeCommand(WinRmTool.java:210)
at io.cloudsoft.winrm4j.winrm.WinRmTool.executePs(WinRmTool.java:269)
at com.klopotek.core.liveaid.LiveAidCLI.main(LiveAidCLI.java:99)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.soap.SOAPFaultException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
Если я добавлю множество зависимостей, связанных с javax, cxf и т. Д., Я наконец смогу выполнить его правильно, но только внутри Eclipse. Что не так с этим подходом? Является ли зависимость maven winrm4j самосогласованной?
Спасибо за поддержку.
--Vito