質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

18473閲覧

Selenium+JAVAの.jarファイルが起動しない

takuan_no_hito

総合スコア27

JUnit

JUnitは、Javaで開発されたプログラムのユニットテストを行うためのアプリケーションフレームワークです。簡単にプログラムのユニットテストを自動化することができ、結果もわかりやすく表示されるため効率的に開発時間を短縮できます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2016/08/29 12:19

編集2016/08/31 08:34

###前提・実現したいこと
.jarファイルを起動する

###発生している問題・エラーメッセージ
EclipseにSeleniumを導入して、自動化を色々試したのですが、最終的にEclipseで.jarファイルにソースコードをエクスポートして、.jarファイル起動しようとしたところ、起動しませんでした。(Eclipse内では正常な挙動を示しています)

追記(16/08/31,10:28)エラーメッセージを付記

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/W
ebDriver
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetMethodRecursive(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
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)
... 7 more

###ソースコード

###試したこと
Seleniumのpathが通っていないのではと考えています。

追記(16/08/31,10:28)
ご指摘を受けて、ソースコードを以下の様に変更しました。

public static void Setup() { System.setProperty("webdriver.chrome.driver", "C:/Users/..(中略)../chromedriver/chromedriver.exe"); } //尚、修正は、 "./driver/chromedriver.exe" → "C:/Users/..(中略)../chromedriver/chromedriver.exe"です。

C:/Users/..(中略)../chromedriver のファイルには実際にchromedriver.exeが入っていることは確認済みであり、Eclipse内での正常な挙動を確認しています。

###補足情報
chromedriverを使用しており、.jarの中身は以下の様な感じです。

com → htmlhifive → sample → HifiveSiteTest.class と HifiveSiteTest.java
driver → chromedriver.exe
lib → apache-mime4j-0.6.jarなどを含む23個のセレニウム関連.jarファイル と CHANGELOG
META-INF → MANIFEST.MF と REFACTORINGS.XML
.classpath
.project

###解決策
後に私の様な方が出たときのために一応この質問に伴い学んだことを付記しておきます。

まず、エラーの見方。
コマンドプロンプトから*.jarを実行すると、エラーコードが見られる。(常識なんでしょうか)

>java -jar *.jar Error (略)

2つ目に*.exeファイルは.jarの外部に置く。今回はchromedriver.exeでした。.java内でのソースコードは以下のようにして、実際にC:/chromedriverのフォルダー内にchromedriver.exeを置きました。

java

1System.setProperty("webdriver.chrome.driver", "C:/chromedriver/chromedriver.exe");

3つ目は、¥Main-ClassをMANIFEST.MF内で設定するということ。「jar にメイン・マニフェスト属性がありません」というエラーが出たときはこの設定がなされていない可能性があるらしいです。

最後は、JUnitテストでは、.jarファイルにエクスポートしたときに起動しないこと。eclipseにて「右クリック→実行→JUnitテスト」で実行している場合、.jarファイルにエクスポートしたときにエラーになります。

参考までに、JUnitテストで実行する場合のソースコード(上)と、Javaアプリケーションで実行する場合のソースコード(下)を記しておきます。尚、このソースコードは素人が頑張って作ったものですので、参考程度にしておいて下さい。

java

1//JUnitバージョン 2 3import org.junit.Assert; 4import org.junit.BeforeClass; 5import org.junit.Test; 6import org.openqa.selenium.By; 7import org.openqa.selenium.Keys; 8import org.openqa.selenium.WebDriver; 9import org.openqa.selenium.WebElement; 10import org.openqa.selenium.chrome.ChromeDriver; 11public class WebTest { 12 13 @BeforeClass 14 public static void Setup() { 15 System.setProperty("webdriver.chrome.driver", "C:/chromedriver/chromedriver.exe"); 16 } 17 18 @Test 19 public void main() { 20 WebDriver driver = new ChromeDriver(); 21 driver.get("https://www.google.co.jp/"); 22 driver.quit(); 23 }

java

1//Javaアプリケーションバージョン 2import org.junit.Assert; 3import org.openqa.selenium.By; 4import org.openqa.selenium.Keys; 5import org.openqa.selenium.WebDriver; 6import org.openqa.selenium.WebElement; 7import org.openqa.selenium.chrome.ChromeDriver; 8 9 10 11public class WebTest { 12 13 public static void main(String[] args){ 14 (new WebTest5()).run();} 15 16 public static void Setup() { 17 System.setProperty("webdriver.chrome.driver", "C:/chromedriver/chromedriver.exe"); 18 } 19 20 public void run() { 21 Setup(); 22 WebDriver driver = new ChromeDriver(); 23 driver.get("https://www.google.co.jp/"); 24 driver.quit(); 25 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらく下記のようなエラーが出ていると思います。

Exception in thread "main" java.lang.IllegalStateException: The driver executable does not exist: .\driver\chromedriver.exe at com.google.common.base.Preconditions.checkState(Preconditions.java:199) at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:121) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:116) (以下略)

chromedriver.exeはファイルシステム上のディレクトリーにあるファイルを想定しています。
また、Jarファイルの中のexeファイルを直接実行することはできません。

.\driver\chromedriver.exeだけは直接実行しているディレクトリーに置いて実行して下さい。


参考にされていると思われるサイトを貼っておきます。

Selenium WebDriverのインストール~動かしてみる - hifive
https://www.htmlhifive.com/conts/web/view/library/webdriver-howtouse

ちなみに、プロパティー名webdriver.chrome.driverは、このサイトでは文字列を直書きしていますが、定数を使った方が安全で確実です。

lang

1import org.openqa.selenium.chrome.*; 2 3System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, "./driver/chromedriver.exe");

投稿2016/08/29 23:25

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takuan_no_hito

2016/08/31 01:26

exeファイルは外部なんですね。良く理解せずに使っていました。 と、分かったところでエラーがまだあるようです。 Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/W ebDriver at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver 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) ... 7 more ちなみに.javaのソースコード内で、 public static void Setup() { System.setProperty("webdriver.chrome.driver", "C:/Users/..(中略)../chromedriver/chromedriver.exe"); } としています。 質問も少し修正しておきます。
argius

2016/08/31 01:33

Jarファイルの作り方にも問題があるかも知れません。 私が成功した作り方は、実行可能Jarファイルで作る方法です。ライブラリー格納方式は、抽出ではない方を選びます。 (今Eclipseを見られないので正確な文言が分からないんです。すみません。)
takuan_no_hito

2016/08/31 02:09

 「生成されるJARに必須ライブラリーをパッケージ」の項目でしょうか。  私はそれ以前に実行可能JARファイルから起動構成で、該当のファイルの選択ができない状態です。少し調べて色々試しましたが、「実行可能JARファイル」からのエクスポートができません。
argius

2016/08/31 02:14

もしかして、JUnitテストクラスを実行しようとしていませんか? その辺は記載していただいてないので、参考にしたと思われるサイトの記載から判断しています。 Jarで実行できるようにするには、mainから実行しないとダメだと思います。
takuan_no_hito

2016/08/31 08:08

解決しました。 仰るとおりJUnitテストになってました。素早く的確な回答を有難う御座いました。 解決した内容は質問文に付記させて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問