so i'm trying write first program pulls data web, , since it's financial program, decided use (allegedly) easy , simple yahoo! finance api. downloaded api .jar files, , save, imported whole lot of them eclipse via add external jars tool.
problem is, whenever try run it, socketexception: permission denied runtime error.
the code i'm running incredibly basic:
stock stock = yahoofinance.get("orcl");
that 1 line of code should value of oracle (orcl) stock yahoo finance. instead throws exception.
i have tried can think of:
1) disabled firewalls 2) double checked .jar imports 3) tested running line part of separate thread (a desperate, blind move reaching @ point).
i have exhausted every possible angle of research can think of, , i've found far this: sending email using jsp
this looks similar problem, attempted solution suggested: adding line "-djava.net.preferipv4stack=true" eclipse.ini file. seems have had no effect.
just in case, i'm pasting contents of eclipse.ini file here too, in case put in wrong spot or something:
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20140603-1326 -product org.eclipse.epp.package.standard.product --launcher.defaultaction openfile --launcher.xxmaxpermsize 256m -showsplash org.eclipse.platform --launcher.xxmaxpermsize 256m --launcher.defaultaction openfile --launcher.appendvmargs -vmargs -djava.net.preferipv4stack=true -dosgi.requiredjavaversion=1.7 -xms40m -xmx512m
i'm out of ideas right now. want know why exception being thrown, , can prevent it.
thanks in advance.
edit: request, full stack trace.
apr 27, 2015 11:54:35 pm yahoofinance.quotes.quotesrequest getresult info: sending request: http://finance.yahoo.com/d/quotes.csv?s=orcl&f=nsc4xab2sa5sbb3sb6sl1sk3sd1t1opghva2kjm3m4sj2sss1sj1sf6sr1qdyee7e9e8rr5p6p5b4s6j4t8&e=.csv apr 27, 2015 11:54:35 pm yahoofinance.quotes.quotesrequest getresult severe: java.net.socketexception: permission denied: connect java.net.socketexception: permission denied: connect @ java.net.dualstackplainsocketimpl.connect0(native method) @ java.net.dualstackplainsocketimpl.socketconnect(unknown source) @ java.net.abstractplainsocketimpl.doconnect(unknown source) @ java.net.abstractplainsocketimpl.connecttoaddress(unknown source) @ java.net.abstractplainsocketimpl.connect(unknown source) @ java.net.plainsocketimpl.connect(unknown source) @ java.net.sockssocketimpl.connect(unknown source) @ java.net.socket.connect(unknown source) @ java.net.socket.connect(unknown source) @ sun.net.networkclient.doconnect(unknown source) @ sun.net.www.http.httpclient.openserver(unknown source) @ sun.net.www.http.httpclient.openserver(unknown source) @ sun.net.www.http.httpclient.<init>(unknown source) @ sun.net.www.http.httpclient.new(unknown source) @ sun.net.www.http.httpclient.new(unknown source) @ sun.net.www.protocol.http.httpurlconnection.getnewhttpclient(unknown source) @ sun.net.www.protocol.http.httpurlconnection.plainconnect0(unknown source) @ sun.net.www.protocol.http.httpurlconnection.plainconnect(unknown source) @ sun.net.www.protocol.http.httpurlconnection.connect(unknown source) @ sun.net.www.protocol.http.httpurlconnection.getinputstream0(unknown source) @ sun.net.www.protocol.http.httpurlconnection.getinputstream(unknown source) @ yahoofinance.quotes.quotesrequest.getresult(quotesrequest.java:83) @ yahoofinance.yahoofinance.getquotes(yahoofinance.java:332) @ yahoofinance.yahoofinance.get(yahoofinance.java:76) @ yahoofinance.yahoofinance.get(yahoofinance.java:61) @ currency.currencyconverter.createwindow(currencyconverter.java:35) @ currency.currencyconverter.<init>(currencyconverter.java:25) @ currency.currencydriver$1.run(currencydriver.java:10) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$500(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source)
i think i'm having same problem: takes little bit hard, managed information wanted being little bit boring, mean, recursively:
void searchquote(symbol) throws interruptedexception { try{ stock stock = yahoofinance.get(symbol); }catch(exception e){ if(e.getclass().getname().equals("java.net.socketexception") || e.getclass().getname().equals("java.net.sockettimeoutexception")){ thread.sleep(60000); searchquote(symbol); } } }
for me, worked.