Java OSX 上的编译错误,但 Windows 上没有

Java compile error on OSX but not on Windows

我 运行 在 OSX 上遇到 Java 编译错误的问题,但在 Windows 7.

上一切正常

在这两个平台上,我都使用带有 Java 1.70 u80 SDK 和 Maven 3.3.9(来自 IntelliJ 的捆绑包)的 IntelliJ

出现在OSX的错误是

incompatible types: Iterator cannot be converted to 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;

问题似乎出在以 sh.extractAllHeaderElements(); 返回的迭代器中,而不是返回 Iterator<Node>,当 运行 在 mac平台。因此,在 Iterator 接口中使用通配符是可行的。

为此,只需将 Iterator<Node> it = sh.extractAllHeaderElements(); 替换为 Iterator<?> it = sh.extractAllHeaderElements();