我在OSX上遇到Java编译错误的问题,但在Windows 7上都可以正常工作。
在这两个平台上我都使用IntelliJ和Java 1.70 u80 SDK和Maven 3.3.9(来自IntelliJ的捆绑包)
OSX上出现的错误是
不兼容的类型:Iterator无法转换为Iterator
表示
的代码行Iterator<Node> it = sh.extractAllHeaderElements();
while (it.hasNext())
{
...
}
为什么它可以在Windows机器上运行而不在Mac上运行?
编辑:
进口是:
import java.io.*;
import java.lang.management.ManagementFactory;
import java.net.URI;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.servlet.ServletRequest;
import javax.xml.bind.Element;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nhindirect.xd.soap.type.MetadataLevelEnum;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
答案 0 :(得分:1)
问题似乎出现在使用sh.extractAllHeaderElements();
返回的迭代器中,而不是返回Iterator<Node>
,它在mac平台上运行时返回其他类型的迭代器。因此,使用带有Iterator接口的通配符将起作用。
要执行此操作,只需将Iterator<Node> it = sh.extractAllHeaderElements();
替换为Iterator<?> it = sh.extractAllHeaderElements();