leehon
V2EX  ›  Java

编译后的jar 和 ide的执行结果居然不一样

  •  
  •   leehon · Jul 28, 2013 · 4262 views
    This topic created in 4696 days ago, the information mentioned may be changed or developed.
    ide是netbeans,写了个抓取网页的小东东。在netbens当中一切正常,而编译成jar,无论本机,还是centos 5.3就不一样了。代码里对网页进行subString截取,会报数组越界,indexOf某个字符串的时候返回-1也就是没找到。实在莫名其妙的
    8 replies    1970-01-01 08:00:00 +08:00
    leehon
        1
    leehon  
    OP
       Jul 28, 2013
    在netbeans当中一切正常,百思不得将其
    takwai
        2
    takwai  
       Jul 28, 2013   ❤️ 2
    如果两者是抓取同一个地址,建议各导出两者抓取后的 HTML 源代码进行比较是否真得不同。

    如果两者不是抓取同一个地址,代码写得严谨点, indexOf = -1 时,就不应该把值传递给 subString 了。
    undeflife
        3
    undeflife  
       Jul 28, 2013
    我猜是编码问题..
    scusjs
        4
    scusjs  
       Jul 28, 2013
    遇到过在eclipse和myeclipse中不一样的情况
    sonicwu
        5
    sonicwu  
       Jul 28, 2013
    @takwai 的思路是正确的,既然subString和indexOf的结果不同,差异肯定在操作的字符串上;若是目标页面确实返回了不同的内容,依据可能是user-agent

    第一次发现有Java节点...
    leehon
        6
    leehon  
    OP
       Jul 29, 2013
    发现了问题,原因在于ide和最终生产环境中。抓取到的网页代码不一样,生成环境中被服务器识别出来了,我开始用的HttpURLConnection抓取,后来用了jsoup。但在ide下都能测试通过,而编译后就不行,不知道服务器是用什么方式判定我的
    VYSE
        7
    VYSE  
       Jul 29, 2013
    @leehon 类似问题Python跟C下面都见过。
    有的地方必须用PYTHONIOENCODING=UTF-8才能正确解开。
    我觉得不太可能request时的区别,倒像是response拿下来编码进行了转换。
    可以试试wireshark看request里accept-encoding有没有变化。
    leehon
        8
    leehon  
    OP
       Jul 30, 2013
    @takwai
    @undeflife
    @scusjs
    @sonicwu
    @VYSE
    感谢大家的关注,问题解决了。原因在于我生成的URL有两个汉字参数,没有进行url编码,导致后一种情况服务器找不到数据,并302重定了。进行编码后,一切都正常了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   901 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:09 · PVG 06:09 · LAX 15:09 · JFK 18:09
    ♥ Do have faith in what you're doing.