小编bdz*_*vel的帖子

如何包含一个打包的WSDL以用于使用wsimport生成的Java类?

我来自C#所以我意识到我不能指望Java中存在很多(优秀的)可用性特性和功能,但我最近有点像这个Java项目,我根本无法想象这个.在C#/ .NET中,Web服务代理类和生成的数据契约是不可能的,但由于某种原因,Web服务的Java实现对我来说似乎并不合适.

这是交易......

我使用wsimport从.wsdl文件创建生成的.java文件.例如...

"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin ".\wsdl\MyWSDL.wsdl"
Run Code Online (Sandbox Code Playgroud)

我注意到这个硬编码(输入那个短语几乎让我呕吐)"wsdlLocation"作为wsdl的当前位置("C:\ Users\ME\etc\wsdl\MyWSDL.wsdl").所以我把它拿出来:

"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin -wsdllocation "NULL" ".\wsdl\MyWSDL.wsdl"
Run Code Online (Sandbox Code Playgroud)

现在,当我实例化生成的服务时......

MyService xyz = new MyService();
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.有些东西沿着"找不到文件C:\ blahblah\Temp\NULL".好的......回到绘图板.在对此进行了一些调查后,我在Stack Overflow上发现了一篇帖子,其中讨论了使用"classpath:META-INF/WSDL.wsdl"作为wsdl位置.

"%JAVA_HOME%\bin\wsimport" ... -wsdllocation "classpath:WSDLs/MyWSDL.wsdl" ".\wsdl\MyWSDL.wsdl"
copy ".\wsdl\*" .\bin\WSDLs
cd bin
"%JAVA_HOME%\bin\jar" cf WebServiceProxies.jar *
Run Code Online (Sandbox Code Playgroud)

错误!

"Unknown protocol: classpath" 
Run Code Online (Sandbox Code Playgroud)

奇怪的是,Stack Overflow上的帖子被标记为答案.我想有可能在过去的两年中,一个不错的数量已经改变到不再支持"classpath:"的地步,或者有另一种方法可以做到这一点,但我无法弄清楚/找到答案.

好的,所以我需要回答几个问题之一(先谢谢!!!!我在这里疯了!).

  1. 有没有办法让它在运行时不需要WSDL?对于它的价值,我认为当我实例化对象时它需要这个BS.有什么方法可以抑制这个要求?也许如果我使用不同的工具......?

  2. 如果此代码无法在运行时不需要WSDL,那么如何让它从包中获取此WSDL?我在wsdllocation参数中放入什么来使其从JAR文件中加载WSDL?

java wsdl web-services wsimport

8
推荐指数
1
解决办法
8208
查看次数

NoClassDefFoundError javax/jms /甚至在指定classpath时也是消息

我在运行与JMS有关的某些Java代码时遇到错误.我已经把头发拉了两天试图解决这个问题.

我得到的例外是"java.lang.NoClassDefFoundError:javax/jms/Message"

java.lang.NoClassDefFoundError: javax/jms/Message
    at Asci.ActiveBatch.JMSAgent.JMSManager.createMsg(JMSManager.java:195)
    at Asci.ActiveBatch.JMSAgent.JMSService.SendMessageHandler(JMSService.java:160)
Run Code Online (Sandbox Code Playgroud)

没有详细介绍TOO,这是指这一行:

public static void createMsg(String icf, String url, String cf, String QName, String msgText, String[] props, String user, String pass) throws Exception {
    JMSProducer.produceMsg(icf, url, cf, QName, msgText, props, user, pass);
}
Run Code Online (Sandbox Code Playgroud)

(不要问为什么这个函数基本上映射到另一个...我最初没有编写这段代码)

我把这段代码称为

java -jar /path/myjarfile.jar
Run Code Online (Sandbox Code Playgroud)

javax.jms.jar包含在该jar的清单中(并且它存在于该位置),但以防万一我还尝试将类路径包含到我的lib文件夹(当然包含javax.jms.jar),如下所示:

java -classpath /path/lib:. -jar /path/myjarfile.jar
Run Code Online (Sandbox Code Playgroud)

到目前为止我没有运气.我不知道该怎么做或如何调试这个问题.任何帮助将不胜感激.显然,这段代码会编译,因此这些类必须在编译时(至少)可用.

谢谢.

EDITS:

1)我也尝试了java -classpath /path/lib/javax.jms.jar:.-jar /path/myjarfile.jar

2)此问题发生在运行时,而不是编译时.

3)所以,我有其他代码在相同的jar文件中调用相同的方法.从特定的jar调用此代码时,有些东西没有正确啮合.我检查并重新检查了我的其他代码,以确保它是相同的(它是/是),所以它似乎不是一个代码问题.在某处似乎有一些混乱的参考或某事.

java jms exception noclassdeffounderror

5
推荐指数
1
解决办法
4万
查看次数

React Material-UI“Chip”组件的“x”(删除)按钮不起作用

我无法像示例中那样让“Chip”控件支持“X”按钮:http://www.material-ui.com/#/components/chip

添加“onRequestDelete”属性会添加“X”按钮,但单击它不会执行任何操作。事实上,悬停在“X”按钮本身上似乎并没有触发其悬停效果(即整个芯片具有悬停效果,并且按钮本身应该具有悬停效果 - 看起来并不像按钮的悬停效果曾经发生过)。就像我无法获得按钮的焦点一样。

注意:如果我单击芯片并按“删除”键,则会弹出“> IN DELETE”警报。我注意到类似的行为,因为我也尝试使用material-ui-chip-input,“Backspace”可以删除芯片,但我永远不能使用“X”按钮。

基本示例:

import React from 'react';
import Chip from 'material-ui/Chip';

class MyChip extends React.Component {
    constructor(props) {
        super(props);

        this.delete = this.delete.bind(this);
    }

    delete(e) {
        alert(" > IN DELETE"); // Does not fire on button click (except when I hit "Delete" key, see above explanation)
    }

    render() {
        return <Chip key={0} onRequestDelete={this.delete}>testy</Chip>;
    }
}
Run Code Online (Sandbox Code Playgroud)

相关package.json依赖项:

"material-ui": "^0.16.7",
"material-ui-chip-input": "^0.12.1",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-tap-event-plugin": "^2.0.1",
Run Code Online (Sandbox Code Playgroud)

javascript reactjs material-ui

5
推荐指数
1
解决办法
1万
查看次数