V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leehon
V2EX  ›  Java

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

  •  
  •   leehon · 2013-07-28 21:11:53 +08:00 · 3589 次点击
    这是一个创建于 4134 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ide是netbeans,写了个抓取网页的小东东。在netbens当中一切正常,而编译成jar,无论本机,还是centos 5.3就不一样了。代码里对网页进行subString截取,会报数组越界,indexOf某个字符串的时候返回-1也就是没找到。实在莫名其妙的
    8 条回复    1970-01-01 08:00:00 +08:00
    leehon
        1
    leehon  
    OP
       2013-07-28 21:12:52 +08:00
    在netbeans当中一切正常,百思不得将其
    takwai
        2
    takwai  
       2013-07-28 21:21:26 +08:00   ❤️ 2
    如果两者是抓取同一个地址,建议各导出两者抓取后的 HTML 源代码进行比较是否真得不同。

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

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