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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Q&A

解決済

1回答

4620閲覧

java初心者です。Elements型の変数の戻り値受け渡しが失敗します。

arukana-1

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

0グッド

0クリップ

投稿2017/02/04 03:23

###前提・実現したいこと
一定時間ごとにデータベースに外部サイトの特定タグ内の文字列をアップロードするプログラムを作ろうと思っています。
特定タグ内の文字列を抜くこと(GetPrice.class)
一定時間ごとに特定動作をさせること(TimerSample.class)
データベースにデータを上げる(MySQLConnector.class)
3つのjavaは個別に動かして見た時は動いていました。

###発生している問題・エラーメッセージ
組み合わせる段階にて外部サイトの文字列データ(Elements型)の戻り値?の受け渡しが上手くいっていないのでしょうか?
コンパイル時にエラーを吐きます。
どのようにエラーを直せばいいのか教えて下さい!お願いします。
またjava初心者でしてどのような環境情報等を晒せばいいのかよくわかっておりません。足りない場合は聞いて頂ければ調べます。
よろしくお願いします。
jdk 1.8.0_111
Tomcat 8.0
Connector.j 5.1

C:\Apache Software Foundation\Tomcat 8.0\webapps\jsoup\WEB-INF\classes>javac TimerSample.java GetPrice.java MySQLConnector.java MySQLConnector.java:4: エラー: シンボルを見つけられません public void updb(Elements test) { ^ シンボル: クラス Elements 場所: クラス MySQLConnector TimerSample.java:29: エラー: シンボルを見つけられません Elements test = getprice.cuck(); ^ シンボル: クラス Elements 場所: クラス TimerSample.TimeStar エラー2個

###該当のソースコード
MySQLConnector

java

1import java.sql.*; 2 3public class MySQLConnector { 4 public void updb(Elements test) { 5 Connection con = null; 6 7 try { 8 // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要 9 Class.forName("com.mysql.jdbc.Driver").newInstance(); 10 // MySQLに接続 11 con = DriverManager.getConnection("jdbc:mysql://localhost/jsp10", "jsp10", "jsp10"); 12 Statement stm = con.createStatement(); 13 String sql = "UPDATE opendata SET placename = '500', temperature ='" + test + "' WHERE id = 2"; 14 int result = stm.executeUpdate(sql); 15 System.out.println("更新件数は" + result + "です。"); 16 } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { 17 System.out.println("JDBCドライバのロードに失敗しました。"); 18 } catch (SQLException e) { 19 System.out.println("MySQLに接続できませんでした。"); 20 } finally { 21 if (con != null) { 22 try { 23 con.close(); 24 } catch (SQLException e) { 25 System.out.println("MySQLのクローズに失敗しました。"); 26 } 27 } 28 } 29 } 30}

GetPrice

java

1import org.jsoup.Jsoup; 2import org.jsoup.nodes.Document; 3import org.jsoup.nodes.Element; 4import org.jsoup.select.Elements; 5 6import java.io.IOException; 7 8 9public class GetPrice { 10 public Elements cook() throws IOException { 11 12 String url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=9501.T"; 13 14 Document doc = Jsoup.connect(url).get(); 15 Elements stoksPrice=doc.select("td[class=stoksPrice]"); 16 System.out.println(stoksPrice); 17 return stoksPrice; 18 19 } 20 21}

TimerSample

java

1import java.io.IOException; 2import java.util.Timer; 3import java.sql.*; 4 5import java.util.TimerTask; 6import javax.swing.*; 7 8public class TimerSample extends JFrame{ 9 public int i = 0; 10 11 public static void main(String[] args) { 12 new TimerSample(); 13 } 14 15 public TimerSample(){ 16 TimeStar star = new TimeStar(); 17 Timer timer = new Timer(); 18 System.out.println( "5"); 19 System.out.println( "1"); 20 21 timer.schedule(star, 1000,1000); 22 23 } 24 25 class TimeStar extends TimerTask { 26 public void run() { 27 GetPrice getprice = new GetPrice(); 28 MySQLConnector mysqlconnector = new MySQLConnector(); 29 Elements test = getprice.cook(); 30 31 try { 32 mysqlconnector.updb(test); 33 34 } catch (IOException e) { 35 36 e.printStackTrace(); 37 } 38 i++; 39 if(i%10==0){ 40 System.out.println(); 41 } 42 if(i==2) System.exit(0); 43 } 44 } 45}

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

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

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

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

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

guest

回答1

0

ベストアンサー

使用されているライブラリのバージョンとともに明記もお願いします。

その上で、以下サイトを利用確認しています。
JSOUPダウンロード先
JSOUP API 仕様(javadoc)

いくつか気づいた点があります。
クラスごとに指摘を書いていくのでもう一度ソースを確認してみていただけますか。

  • MySQLConnector
  1. 存在しないシンボルとエラーが出ているようにimportに抜けがあります。

import org.jsoup.select.Elements;

  • TimerSample
  1. 存在しないシンボルとエラーが出ているようにimportに抜けがあります。

import org.jsoup.select.Elements;

  • TimerSample#TimeStar run()

下記記述が30行目以降に確認できますが、これはGetPrice側でIOException を例外として捕捉する指示が書かれているためこのままではエラーが出ます。
コンパイルを通すというのであれば下記も捕捉するようにしてください。

Elements test = getprice.cook();

補足後

java

1 try { 2 Elements test = getprice.cook(); 3 mysqlconnector.updb(test); 4 5 } catch (IOException e) { 6 7 e.printStackTrace(); 8 } 9
  • GetPrice

なし

以下知識ですが、
1.javaのコンパイルについてはjavacの使い方を今一度把握されることをお勧めします。
--classpath ないし -cpオプション
2.javadocの読み方
3.エラーに恐れない気力
4.importはそのソース内でしか有効にならない

投稿2017/02/04 03:49

編集2017/02/04 03:51
lib

総合スコア446

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

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

arukana-1

2017/02/04 04:24

ご指摘の通り、import org.jsoup.select.Elements;をTimerSampleにも書いていなかったこと、try catch文の中に記述していなかったことが原因でした。 付け焼刃でキチンとjavaを勉強していなかったツケがきたといったところでしょうか。 これに反省し最期1、2、4の項目はもう一度きちんと見つめなすと共にもう少し根気を持とうかと思います。 丁寧な解説、ご指摘、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問