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

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

ただいまの
回答率

90.53%

  • Java

    15560questions

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

  • MySQL

    6829questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 890

arukana-1

score 1

前提・実現したいこと

一定時間ごとにデータベースに外部サイトの特定タグ内の文字列をアップロードするプログラムを作ろうと思っています。
特定タグ内の文字列を抜くこと(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

import java.sql.*;

public class MySQLConnector {
    public void updb(Elements test) {
        Connection con = null;

        try {
            // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost/jsp10", "jsp10", "jsp10");
            Statement stm = con.createStatement();
            String sql = "UPDATE opendata SET placename = '500', temperature ='" + test + "' WHERE id = 2";
            int result = stm.executeUpdate(sql);
            System.out.println("更新件数は" + result + "です。");
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            System.out.println("JDBCドライバのロードに失敗しました。");
        } catch (SQLException e) {
            System.out.println("MySQLに接続できませんでした。");
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.out.println("MySQLのクローズに失敗しました。");
                }
            }
        }
    }
}


GetPrice

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;


public class GetPrice {
    public Elements cook() throws IOException {

         String url = "http://stocks.finance.yahoo.co.jp/stocks/detail/?code=9501.T";

         Document doc = Jsoup.connect(url).get();
         Elements stoksPrice=doc.select("td[class=stoksPrice]");
         System.out.println(stoksPrice);
        return stoksPrice;

    }

}


TimerSample

import java.io.IOException;
import java.util.Timer;
import java.sql.*;

import java.util.TimerTask;
import javax.swing.*;

public class TimerSample extends JFrame{
    public int i = 0;

    public static void main(String[] args) {
        new TimerSample();
    }

    public TimerSample(){
        TimeStar star = new TimeStar();
        Timer timer = new Timer();
        System.out.println( "5");
        System.out.println( "1");

        timer.schedule(star, 1000,1000); 

    }

    class TimeStar extends TimerTask {
        public void run() {
        GetPrice getprice = new GetPrice();
        MySQLConnector mysqlconnector = new MySQLConnector();
        Elements test = getprice.cook();

        try {
            mysqlconnector.updb(test);

        } catch (IOException e) {

            e.printStackTrace();
        }
                i++;
                if(i%10==0){
                        System.out.println();
                }
                if(i==2) System.exit(0);               
        }
    }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

その上で、以下サイトを利用確認しています。
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();

補足後

        try {
            Elements test = getprice.cook();
            mysqlconnector.updb(test);

        } catch (IOException e) {

            e.printStackTrace();
        }

 

  • GetPrice
    なし

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/04 13:24

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

    キャンセル

同じタグがついた質問を見る

  • Java

    15560questions

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

  • MySQL

    6829questions

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