将Jython htmlunit脚本转换为纯Java

将Jython htmlunit脚本转换为纯Java,java,jython,htmlunit,Java,Jython,Htmlunit,我有一个非常好的脚本,但是它真的很慢,所以我决定试着把它转换成纯java,看看它能不能加快速度 在Jython中,我使用: from java.util import logging from java import lang from org.apache.commons.logging import LogFactory logger = LogFactory.getLog('com.gargoylesoftware.htmlunit') logger.getLogger().setLeve

我有一个非常好的脚本,但是它真的很慢,所以我决定试着把它转换成纯java,看看它能不能加快速度

在Jython中,我使用:

from java.util import logging
from java import lang
from org.apache.commons.logging import LogFactory
logger = LogFactory.getLog('com.gargoylesoftware.htmlunit')
logger.getLogger().setLevel(logging.Level.OFF)
webclient = WebClient(BrowserVersion.FIREFOX_3_6)
webclient.setThrowExceptionOnFailingStatusCode(False)
这基本上可以防止所有来自htmlunit的恼人警告消息停止出现在屏幕上。如果它正在读取的代码不完美,但最终仍然会读取它,那么它往往会抱怨很多

在Java中,我试图复制和粘贴相同的代码,但Java似乎忽略了它。如果我在导入中添加类型,它不会给我一个错误,它只是一直在做同样的事情

import java import.lang;
import org.apache.commons.logging.LogFactory;
LogFactory.getLog('com.gargoylesoftware.htmlunit');
LogFactory.getLogger().setLevel(logging.Level.OFF);
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
webClient.setThrowExceptionOnFailingStatusCode(false);

由于文件相当大,我将不得不对代码进行大量转换,我做错的逻辑是什么?

Java的语法与Python的语法不同。导入在类文件的顶部声明,其他事情在类容器中完成

Java文件基本上如下所示:

import [...]
public class YourClass{

  public YourClass(){
    // Constructor
  }

  public static void main(Stirng[] args){
    // The method Java calls when a class is executed in a JVM
  }
}

您应该先查看一些Java教程,因为Java和Python非常不同。

好的,谢谢,我来看看。我认为,因为我正在将java模块导入jython,所以我实际上使用的是java语法。我真的怀疑,鉴于jython也在JVM上运行,转换是否会有很大的改进。。。当然,你可以相信,我在读这篇文章:他们提到,同一个脚本在纯java中完成需要1.6秒,而在jython中需要632秒。我不知道我是否能获得如此大的性能提升,但在jython中解析一个页面需要2分钟以上,到目前为止,在Java中大约需要24秒,虽然还不完全相同,但即使需要更多的时间,我想我还是会很高兴的。目前,我在jython花了18天的时间解析了16000页。