最近我
Intelij IDEA
运行就好了。是的,它似乎确实如此。所以我做了什么:
>"c:Program FilesJavajdk1.7.0_51binjavac.exe" Program.java -cp selenium-java-2.41.0.jar
Note: Program.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
>java Program -cp selenium-java-2.41.0.jar
Error: Could not find or load main class Program
Intelij IDEA
这样运行它:
"C:Program FilesJavajdk1.7.0_51binjava" -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 13.1.1bin" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJavajdk1.7.0_51jrelibcharsets.jar;C:Program FilesJavajdk1.7.0_51jrelibdeploy.jar;C:Program FilesJavajdk1.7.0_51jrelibjavaws.jar;C:Program FilesJavajdk1.7.0_51jrelibjce.jar;C:Program FilesJavajdk1.7.0_51jrelibjfr.jar;C:Program FilesJavajdk1.7.0_51jrelibjfxrt.jar;C:Program FilesJavajdk1.7.0_51jrelibjsse.jar;C:Program FilesJavajdk1.7.0_51jrelibmanagement-agent.jar;C:Program FilesJavajdk1.7.0_51jrelibplugin.jar;C:Program FilesJavajdk1.7.0_51jrelibresources.jar;C:Program FilesJavajdk1.7.0_51jrelibrt.jar;C:Program FilesJavajdk1.7.0_51jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.7.0_51jrelibextdnsns.jar;C:Program FilesJavajdk1.7.0_51jrelibextjaccess.jar;C:Program FilesJavajdk1.7.0_51jrelibextlocaledata.jar;C:Program FilesJavajdk1.7.0_51jrelibextsunec.jar;C:Program FilesJavajdk1.7.0_51jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.7.0_51jrelibextsunmscapi.jar;C:Program FilesJavajdk1.7.0_51jrelibextzipfs.jar;C:UsersYuriDesktop2048_bot2048_Bot_2.0-mastertargetclasses;C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-firefox-driver2.39.0selenium-firefox-driver-2.39.0.jar;C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-remote-driver2.39.0selenium-remote-driver-2.39.0.jar;C:UsersYuri.m2repositorycglibcglib-nodep2.1_3cglib-nodep-2.1_3.jar;C:UsersYuri.m2repositoryorgjsonjson20080701json-20080701.jar;C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-api2.39.0selenium-api-2.39.0.jar;C:UsersYuri.m2repositorycomgoogleguavaguava15.0guava-15.0.jar;C:UsersYuri.m2repositoryorgapachehttpcomponentshttpclient4.3.1httpclient-4.3.1.jar;C:UsersYuri.m2repositoryorgapachehttpcomponentshttpcore4.3httpcore-4.3.jar;C:UsersYuri.m2repositorycommons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar;C:UsersYuri.m2repositorycommons-codeccommons-codec1.6commons-codec-1.6.jar;C:UsersYuri.m2repositoryorgapachecommonscommons-exec1.1commons-exec-1.1.jar;C:UsersYuri.m2repositorynetjavadevjnajna3.4.0jna-3.4.0.jar;C:UsersYuri.m2repositorynetjavadevjnaplatform3.4.0platform-3.4.0.jar;C:UsersYuri.m2repositorycommons-iocommons-io2.2commons-io-2.2.jar;C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 13.1.1libidea_rt.jar" com.intellij.rt.execution.application.AppMain Program
为方便起见,以下是jar
文件:
C:Program FilesJavajdk1.7.0_51jrelibcharsets.jar
C:Program FilesJavajdk1.7.0_51jrelibdeploy.jar
C:Program FilesJavajdk1.7.0_51jrelibjavaws.jar
C:Program FilesJavajdk1.7.0_51jrelibjce.jar
C:Program FilesJavajdk1.7.0_51jrelibjfr.jar
C:Program FilesJavajdk1.7.0_51jrelibjfxrt.jar
C:Program FilesJavajdk1.7.0_51jrelibjsse.jar
C:Program FilesJavajdk1.7.0_51jrelibmanagement-agent.jar
C:Program FilesJavajdk1.7.0_51jrelibplugin.jar
C:Program FilesJavajdk1.7.0_51jrelibresources.jar
C:Program FilesJavajdk1.7.0_51jrelibrt.jar
C:Program FilesJavajdk1.7.0_51jrelibextaccess-bridge-64.jar
C:Program FilesJavajdk1.7.0_51jrelibextdnsns.jar
C:Program FilesJavajdk1.7.0_51jrelibextjaccess.jar
C:Program FilesJavajdk1.7.0_51jrelibextlocaledata.jar
C:Program FilesJavajdk1.7.0_51jrelibextsunec.jar
C:Program FilesJavajdk1.7.0_51jrelibextsunjce_provider.jar
C:Program FilesJavajdk1.7.0_51jrelibextsunmscapi.jar
C:Program FilesJavajdk1.7.0_51jrelibextzipfs.jar
C:UsersYuriDesktop2048_bot2048_Bot_2.0-mastertargetclasses
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-firefox-driver2.39.0selenium-firefox-driver-2.39.0.jar
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-remote-driver2.39.0selenium-remote-driver-2.39.0.jar
C:UsersYuri.m2repositorycglibcglib-nodep2.1_3cglib-nodep-2.1_3.jar
C:UsersYuri.m2repositoryorgjsonjson20080701json-20080701.jar
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-api2.39.0selenium-api-2.39.0.jar
C:UsersYuri.m2repositorycomgoogleguavaguava15.0guava-15.0.jar
C:UsersYuri.m2repositoryorgapachehttpcomponentshttpclient4.3.1httpclient-4.3.1.jar
C:UsersYuri.m2repositoryorgapachehttpcomponentshttpcore4.3httpcore-4.3.jar
C:UsersYuri.m2repositorycommons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar
C:UsersYuri.m2repositorycommons-codeccommons-codec1.6commons-codec-1.6.jar
C:UsersYuri.m2repositoryorgapachecommonscommons-exec1.1commons-exec-1.1.jar
C:UsersYuri.m2repositorynetjavadevjnajna3.4.0jna-3.4.0.jar
C:UsersYuri.m2repositorynetjavadevjnaplatform3.4.0platform-3.4.0.jar
C:UsersYuri.m2repositorycommons-iocommons-io2.2commons-io-2.2.jar
C:Program Files (x86)JetBrainsIntelliJ IDEA Community Edition 13.1.1libidea_rt.jar" com.intellij.rt.execution.application.AppMain Program
所以它从jdk
的jar
文件开始,然后是项目输出目录,然后是一些jar
文件,这些文件可能是由Intelij IDEA
自己下载的,最后是Intelij IDEA
的jar
文件,调试或类似的东西可能需要该文件。
那么,我如何知道需要哪些jar
文件以及这些~/.m2
文件来自哪里?
UPD 以下是为启动此程序而设置的最小jar
文件:
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-firefox-driver2.39.0selenium-firefox-driver-2.39.0.jar
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-remote-driver2.39.0selenium-remote-driver-2.39.0.jar
C:UsersYuri.m2repositoryorgjsonjson20080701json-20080701.jar
C:UsersYuri.m2repositoryorgseleniumhqseleniumselenium-api2.39.0selenium-api-2.39.0.jar
C:UsersYuri.m2repositorycomgoogleguavaguava15.0guava-15.0.jar
C:UsersYuri.m2repositoryorgapachehttpcomponentshttpclient4.3.1httpclient-4.3.1.jar
C:UsersYuri.m2repositoryorgapachehttpcomponentshttpcore4.3httpcore-4.3.jar
C:UsersYuri.m2repositorycommons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar
C:UsersYuri.m2repositoryorgapachecommonscommons-exec1.1commons-exec-1.1.jar
因此,即使在m2
diretory 中,也不是所有jar
文件。
UPD Selenium Client & WebDriver Language Bindings 附带了额外的jar
文件,但并非所有文件都是必需的。因此,其中一个选项是指定所有这些jar
文件。但我能够让它以这种方式工作:
>java Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/firefox/FirefoxDriver
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.firefox.FirefoxDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
>java -cp "selenium-java-2.41.0.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Function
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException
at org.openqa.selenium.firefox.FirefoxProfile.<init>(FirefoxProfile.java:87)
at org.openqa.selenium.firefox.FirefoxProfile.<init>(FirefoxProfile.java:77)
at org.openqa.selenium.firefox.FirefoxProfile.<init>(FirefoxProfile.java:65)
at org.openqa.selenium.firefox.FirefoxDriver.getProfile(FirefoxDriver.java:262)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:239)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/exec/Executor
at org.openqa.selenium.os.CommandLine.<init>(CommandLine.java:47)
at org.openqa.selenium.firefox.FirefoxBinary.startProfile(FirefoxBinary.java:96)
at org.openqa.selenium.firefox.FirefoxBinary.clean(FirefoxBinary.java:226)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:91)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.exec.Executor
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;commons-exec-1.1.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/params/HttpParams
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:93)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.HttpParams
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 8 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;commons-exec-1.1.jar;httpclient-4.3.1.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/params/HttpParams
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:93)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.HttpParams
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 8 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;commons-exec-1.1.jar;httpcore-4.3.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:93)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.http.auth.Credentials
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 8 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;commons-exec-1.1.jar;httpcore-4.3.jar;httpclient-4.3.1.jar;." Program
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.http.conn.ssl.AbstractVerifier.<init>(AbstractVerifier.java:82)
at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<init>(AllowAllHostnameVerifier.java:40)
at org.apache.http.conn.ssl.SSLSocketFactory.<clinit>(SSLSocketFactory.java:145)
at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:60)
at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48)
at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:100)
at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:81)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:93)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at Program.main(Program.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 15 more
>java -cp "selenium-java-2.41.0.jar;guava-15.0.jar;json-20080701.jar;commons-exec-1.1.jar;httpcore-4.3.jar;httpclient-4.3.1.jar;commons-logging-1.1.1.jar;." Program
UPD 或者:
find -name '*.jar' -execdir cp -t ~/path/to/prj {} +
如果你编译
javac Program.java
然后将生成Program.class
。这必须位于您的类路径中。
java -cp "Program.class;selenium-java-2.41.0.jar"
Java 程序不需要任何特定的 jar 文件来运行,但它需要包含的类。有各种工具和网站可以帮助您找到:
- 如何查找 Java 类所属的 Jar
还有一些工具可以帮助您管理这些依赖项,例如Maven(.m2与之相关)。提交人指出,
您将需要以某种方式安装Selenium依赖项,例如使用Maven。
恕我直言,该项目应该带有绒球.xml或罐子。