Hello, I have a problem with getResourceAsStream().
I'm using these tools: Eclipse JEE edition version 3.5.1 with the Apache
CXF plugin and Apache Tomcat version 6.0.20. Java is version 6. This is
under Windows.
I've written a very simple JAX-WS web service, here's the complete code:
package bioweb;
import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(name="BioWebInterface", targetNamespace="http://bioweb/")
public interface BioWebInterface extends Remote {
@WebMethod(operationName="sayHello", action="urn:SayHello")
public String sayHello() throws RemoteException;
}
package bioweb;
import java.io.InputStream;
import java.rmi.RemoteException;
import javax.annotation.PostConstruct;
import javax.jws.WebService;
@WebService(targetNamespace="http://bioweb/",
endpointInterface="bioweb.BioWebInterface", portName="BioWebPort",
serviceName="BioWebService")
public class BioWeb implements BioWebInterface {
@Override
public String sayHello() throws RemoteException {
return "Hello from the BioWeb Web Service!";
}
@PostConstruct
protected void init() {
System.out.println("I'm in the postconstruct method.");
InputStream is1 =
getClass().getClassLoader().getResourceAsStream("get-all-model-links.xquery");
InputStream is2 =
BioWeb.class.getClassLoader().getResourceAsStream("get-all-model-links.xquery");
if (is1 != null && is2 != null) {
System.out.println("Successfully loaded resource using both
methods!");
}
else if (is1 != null) {
System.out.println("Successfully loaded resource using method
1.");
}
else if (is2 != null) {
System.out.println("Successfully loaded resource using method
2.");
}
else {
System.err.println("Not successful at all in loading the
resource!");
}
}
/**
* @param args
*/
public static void main(String[] args) {
new BioWeb().init();
}
}
I've created folder called xqueries and added it to the classpath (under
project properties->java build path->libraries tab->add class folder
button and in it I have an XQuery file named get-all-model-links.xquery
(will be lots more later).
When I run the BioWeb class like a normal Java program (by invoking
main(), which calls init(), I can load the XQuery resource fine, the
output is:
I'm in the postconstruct method.
Successfully loaded resource using both methods!
However, when run as a service (then Tomcat calls the init() method due
to its @PostConstruct annotation), the loading of the resource fails.
The output is:
I'm in the postconstruct method.
Not successful at all in loading the resource!
It seems that the class folder I added isn't visible anymore or maybe
the "URL:s" need to be altered when in this context. I'm very new at
this web stuff and I need help, I've had this problem for two days now. :(
I'm doing all the interfacing with Tomcat via Eclipse btw, and I haven't
really tampered with any settings for it.
Thanks for reading and for any replies!
- Fencer
|
|
0
|
|
|
|
Reply
|
Fencer
|
1/27/2010 3:02:08 PM |
|
On 2010-01-27 16:02, Fencer wrote:
> Hello, I have a problem with getResourceAsStream().
[snip my OP]
I believe I solved this problem!
- Fencer
|
|
0
|
|
|
|
Reply
|
Fencer
|
1/27/2010 3:48:11 PM
|
|
On 1/27/2010 7:48 AM, Fencer wrote:
> On 2010-01-27 16:02, Fencer wrote:
>> Hello, I have a problem with getResourceAsStream().
> [snip my OP]
>
> I believe I solved this problem!
It is often considered courteous to explain how you solved your problem.
Others may find your post while looking into a similar problem, and
would benefit from your explanation.
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>
|
|
0
|
|
|
|
Reply
|
Daniel
|
1/27/2010 6:17:05 PM
|
|
Fencer wrote:
> Hello, I have a problem with getResourceAsStream().
>
> [snip my OP]
>
> I believe I solved this problem!
>
Thank you so much for sharing the solution so that others besides
yourself may benefit!
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/27/2010 8:00:12 PM
|
|
On Wed, 27 Jan 2010 16:48:11 +0100, Fencer
<no.i.dont@want.mail.from.spammers.com> wrote, quoted or indirectly
quoted someone who said :
>
>I believe I solved this problem!
Some day someone will have the same problem as you, find you question
in Google then curse you for refusing to share your solution.
--
Roedy Green Canadian Mind Products
http://mindprod.com
Computers are useless. They can only give you answers.
~ Pablo Picasso (born: 1881-10-25 died: 1973-04-08 at age: 91)
|
|
0
|
|
|
|
Reply
|
Roedy
|
1/28/2010 6:14:15 AM
|
|
On 2010-01-27 16:48, Fencer wrote:
> On 2010-01-27 16:02, Fencer wrote:
>> Hello, I have a problem with getResourceAsStream().
> [snip my OP]
>
> I believe I solved this problem!
>
> - Fencer
Hello again. I wish to offer my sincere apologies for not specifying the
details of my solution in my previous post.
The problem turned out to be not in the actual Java code but in how I
was using my tools. Adding a directory to the classpath in the Eclipse
project settings didn't propagate to Tomcat in my context. What I did
was to add the directory to the classpath to Tomcat's launch
configuration under Eclipse. That solved it!
If you you doubleclick on the Tomcat server under the Server tab (in the
window that usually holds tabs like console, problems etc, I'm not sure
what it's called), an "Overview" of settings should open. There's a link
there "Open Launch Configuration" which opens a configuration dialog.
The dialog has a tab called "classpath" and you can add your entry
there, under "User Entries".
Again, I apologise for not writing this the first time around and thanks
to those who reminded me to do so.
- Fencer
|
|
0
|
|
|
|
Reply
|
Fencer
|
1/28/2010 3:26:34 PM
|
|
On Jan 28, 10:26=A0am, Fencer <no.i.d...@want.mail.from.spammers.com>
wrote:
> On 2010-01-27 16:48, Fencer wrote:
>
> > On 2010-01-27 16:02, Fencer wrote:
> >> Hello, I have a problem with getResourceAsStream().
> > [snip my OP]
>
> > I believe I solved this problem!
>
> > - Fencer
>
> Hello again. I wish to offer my sincere apologies for not specifying the
> details of my solution in my previous post.
>
> The problem turned out to be not in the actual Java code but in how I
> was using my tools. Adding a directory to the classpath in the Eclipse
> project settings didn't propagate to Tomcat in my context. What I did
> was to add the directory to the classpath to Tomcat's launch
> configuration under Eclipse. That solved it!
>
> If you you doubleclick on the Tomcat server under the Server tab (in the
> window that usually holds tabs like console, problems etc, I'm not sure
> what it's called), an "Overview" of settings should open. There's a link
> there "Open Launch Configuration" which opens a configuration dialog.
> The dialog has a tab called "classpath" and you can add your entry
> there, under "User Entries".
>
You're supposed to include libraries needed by a web app in the "lib/"
directory of the web app.
You shouldn't entirely depend on the IDE to specify a class path. You
should be able to deploy the application from the command line.
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/28/2010 7:29:57 PM
|
|
On 2010-01-28 20:29, Lew wrote:
>>
>
> You're supposed to include libraries needed by a web app in the "lib/"
> directory of the web app.
>
> You shouldn't entirely depend on the IDE to specify a class path. You
> should be able to deploy the application from the command line.
Thanks for your reply, Lew, and you make a dood point. There are several
jar-files in my WebContent->WEB-INF->lib folder, but if I put my XQuery
file in there, getResourceAsStream() doesn't find it :(
If I could make it work without adding a directory to classpath like I'm
doing that would be even better!
- Fencer
|
|
0
|
|
|
|
Reply
|
Fencer
|
1/28/2010 7:51:01 PM
|
|
Fencer wrote:
> Thanks for your reply, Lew, and you make a dood point. There are several
> jar-files in my WebContent->WEB-INF->lib folder, but if I put my XQuery
> file in there, getResourceAsStream() doesn't find it :(
>
> If I could make it work without adding a directory to classpath like I'm
> doing that would be even better!
There are already several directories in your class path for a web app.
Is your "XQuery file" a JAR? No? Then it doesn't go in the "lib/" directory.
The root directory of your application ("application-name/") and the classes
directory ("application-name/WEB-INF/classes/") are already in your path. Put
your resource relative to one of those.
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/29/2010 3:11:19 AM
|
|
On Thu, 28 Jan 2010 16:26:34 +0100, Fencer
<no.i.dont@want.mail.from.spammers.com> wrote, quoted or indirectly
quoted someone who said :
>
>Again, I apologise for not writing this the first time around and thanks
>to those who reminded me to do so.
Thank you for sharing your solution rather than getting defensive as a
normal person would.
--
Roedy Green Canadian Mind Products
http://mindprod.com
Computers are useless. They can only give you answers.
~ Pablo Picasso (born: 1881-10-25 died: 1973-04-08 at age: 91)
|
|
0
|
|
|
|
Reply
|
Roedy
|
1/29/2010 6:16:18 AM
|
|
On 2010-01-29 04:11, Lew wrote:
> Fencer wrote:
>> Thanks for your reply, Lew, and you make a dood point. There are
>> several jar-files in my WebContent->WEB-INF->lib folder, but if I
>> put my XQuery file in there, getResourceAsStream() doesn't find it
>> :(
>>
>> If I could make it work without adding a directory to classpath
>> like I'm doing that would be even better!
>
> There are already several directories in your class path for a web
> app.
>
> Is your "XQuery file" a JAR? No? Then it doesn't go in the "lib/"
> directory.
No, it's a text file containing code written in the XQuery (an XML query
language), I should have detailed that better in my OP. That's why I
didn't put it in the lib directory (however, I did put the Saxon
jar-file there which I use for running XQuery).
>
> The root directory of your application ("application-name/") and the
> classes directory ("application-name/WEB-INF/classes/") are already
> in your path. Put your resource relative to one of those.
>
I can't check right now but I believe I already put the file in the
project root but I still couldn't load it. I will try again a little later.
Can I get runtime information on which directories are in the classpath?
- Fencer
|
|
0
|
|
|
|
Reply
|
Fencer
|
1/29/2010 10:32:22 AM
|
|
Fencer wrote:
> On 2010-01-29 04:11, Lew wrote:
>> Fencer wrote:
>>> Thanks for your reply, Lew, and you make a dood point. There are
>>> several jar-files in my WebContent->WEB-INF->lib folder, but if I
>>> put my XQuery file in there, getResourceAsStream() doesn't find it
>>> :(
>>>
>>> If I could make it work without adding a directory to classpath
>>> like I'm doing that would be even better!
>>
>> There are already several directories in your class path for a web
>> app.
>>
>> Is your "XQuery file" a JAR? No? Then it doesn't go in the "lib/"
>> directory.
>
> No, it's a text file containing code written in the XQuery (an XML
> query language), I should have detailed that better in my OP. That's
> why I didn't put it in the lib directory (however, I did put the
> Saxon
> jar-file there which I use for running XQuery).
>
>>
>> The root directory of your application ("application-name/") and
>> the
>> classes directory ("application-name/WEB-INF/classes/") are
>> already
>> in your path. Put your resource relative to one of those.
>>
>
> I can't check right now but I believe I already put the file in the
> project root but I still couldn't load it. I will try again a little
> later.
I don't think the project root is in the classpath. The normal wasy
to make a resource available is
1. Put it below WEB-INF/classes, e.g. a resource named a/b/c.xml would
go at WEB-INF/classes/a/b/c.xml
2. Put it into a jar file, and put the jar file into WEB-INF/lib
|
|
0
|
|
|
|
Reply
|
Mike
|
1/29/2010 11:15:36 AM
|
|
Mike Schilling wrote:
> I don't think the project root is in the classpath. The normal wasy
> to make a resource available is
Depends on which of the three types of 'getResource*' methods you use. Those
in 'javax.servlet.ServletContext' include the project root.
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/29/2010 1:43:41 PM
|
|
Lew wrote:
> Mike Schilling wrote:
>> I don't think the project root is in the classpath. The normal
>> wasy
>> to make a resource available is
>
> Depends on which of the three types of 'getResource*' methods you
> use. Those in 'javax.servlet.ServletContext' include the project
> root.
That you need to call a method on a completely different class is a
critical bit of information to omit. And it remains true that the
project root is not in the classpath.
|
|
0
|
|
|
|
Reply
|
Mike
|
1/29/2010 7:22:53 PM
|
|
In article <hjuome$p2l$1@news.albasani.net>, Lew <noone@lewscanon.com>
wrote:
> Mike Schilling wrote:
> > I don't think the project root is in the classpath. The normal wasy
> > to make a resource available is
>
> Depends on which of the three types of 'getResource*' methods you use. Those
> in 'javax.servlet.ServletContext' include the project root.
In this context, does "three types" mean those "getResource*" methods
found in java.lang, java.beans.beancontext, and javax.servlet?
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
|
|
0
|
|
|
|
Reply
|
John
|
1/29/2010 8:19:45 PM
|
|
John B. Matthews wrote:
> In article <hjuome$p2l$1@news.albasani.net>, Lew <noone@lewscanon.com>
> wrote:
>
>> Mike Schilling wrote:
>>> I don't think the project root is in the classpath. The normal wasy
>>> to make a resource available is
>> Depends on which of the three types of 'getResource*' methods you use. Those
>> in 'javax.servlet.ServletContext' include the project root.
>
> In this context, does "three types" mean those "getResource*" methods
> found in java.lang, java.beans.beancontext, and javax.servlet?
Four!
I had in mind Class, ClassLoader and ServletContext. Packages don't have methods.
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/29/2010 11:56:12 PM
|
|
On 29-01-2010 18:56, Lew wrote:
> John B. Matthews wrote:
>> In article <hjuome$p2l$1@news.albasani.net>, Lew <noone@lewscanon.com>
>> wrote:
>>> Mike Schilling wrote:
>>>> I don't think the project root is in the classpath. The normal wasy
>>>> to make a resource available is
>>> Depends on which of the three types of 'getResource*' methods you
>>> use. Those in 'javax.servlet.ServletContext' include the project root.
>>
>> In this context, does "three types" mean those "getResource*" methods
>> found in java.lang, java.beans.beancontext, and javax.servlet?
>
> Four!
>
> I had in mind Class, ClassLoader and ServletContext. Packages don't have
> methods.
No, but you know perfectly well what he means.
Arne
|
|
0
|
|
|
|
Reply
|
UTF
|
1/30/2010 12:00:03 AM
|
|
John B. Matthews wrote:
>>> In this context, does "three types" mean those "getResource*" methods
>>> found in java.lang, java.beans.beancontext, and javax.servlet?
Lew wrote:
>> Four!
>>
>> I had in mind Class, ClassLoader and ServletContext. Packages don't have
>> methods.
Arne Vajhøj wrote:
> No, but you know perfectly well what he means.
And answered what he intended to say. What's your problem?
--
Lew
|
|
0
|
|
|
|
Reply
|
Lew
|
1/30/2010 12:12:45 AM
|
|
In article <hjvtht$qpt$3@news.albasani.net>, Lew <noone@lewscanon.com>
wrote:
> John B. Matthews wrote:
> >>> In this context, does "three types" mean those "getResource*"
> >>> methods found in java.lang, java.beans.beancontext, and
> >>> javax.servlet?
>
> Lew wrote:
> >> Four!
> >>
> >> I had in mind Class, ClassLoader and ServletContext. Packages
> >> don't have methods.
>
> Arne Vajhøj wrote:
> > No, but you know perfectly well what he means.
>
> And answered what he intended to say. What's your problem?
I thank you both for clearing that up. I had tried asterisks as
wildcards, but the meaning was even less clear.
I was intrigued by how the three packages implement the notion of
getting a resource: ClassLoader is foundational, while the bean approach
"allows a BeanContext implementation to interpose behavior between the
child Component and underlying ClassLoader." The ServletContext
implementation "does not use class loaders" at all but serves a similar
purpose relative to the servlet container's context.
This seems like a handy pattern to put in one's hip pocket.
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
|
|
0
|
|
|
|
Reply
|
John
|
1/30/2010 1:10:48 AM
|
|
On 29-01-2010 19:12, Lew wrote:
> John B. Matthews wrote:
>>>> In this context, does "three types" mean those "getResource*" methods
>>>> found in java.lang, java.beans.beancontext, and javax.servlet?
>
> Lew wrote:
>>> Four!
>>>
>>> I had in mind Class, ClassLoader and ServletContext. Packages don't have
>>> methods.
>
> Arne Vajhøj wrote:
>> No, but you know perfectly well what he means.
>
> And answered what he intended to say. What's your problem?
I don't think there were any reason to point out the obvious.
Arne
|
|
0
|
|
|
|
Reply
|
UTF
|
1/30/2010 3:10:56 AM
|
|
|
19 Replies
467 Views
(page loaded in 0.01 seconds)
Similiar Articles: getResourceAsStream() problem - comp.lang.java.programmer ...Hello, I have a problem with getResourceAsStream(). I'm using these tools: Eclipse JEE edition version 3.5.1 with the Apache CXF plugin and Apach... InputStream null using getResourceAsStream - comp.lang.java.help ...getResourceAsStream() problem - comp.lang.java.programmer ... InputStream null using getResourceAsStream - comp.lang.java.help ... InputStream null using ... problem analysis chart - comp.programminggetResourceAsStream() problem - comp.lang.java.programmer ... A programming problem. - comp.lang.awk getResourceAsStream() problem - comp.lang.java.programmer ... problem ... Base64 encode in VB6, decode in Java PROBLEM!!! - comp.lang.java ...InputStream null using getResourceAsStream - comp.lang.java.help ... Base64 encode in VB6, decode in Java PROBLEM!!! - comp.lang.java ... InputStream null using ... A programming problem. - comp.lang.awkgetResourceAsStream() problem - comp.lang.java.programmer ... problem analysis chart - comp.programming getResourceAsStream() problem - comp.lang.java.programmer ... Problem in Loading JSP - comp.lang.java.programmergetResourceAsStream() problem - comp.lang.java.programmer ... Problem in Loading JSP - comp.lang.java.programmer hi friends, my jsp never had any problem for small amount ... Problem using EndNote addin with MS Word 2007 - comp.os.ms-windows ...Hello, I have a problem with getResourceAsStream(). I'm using these tools: Eclipse JEE ... help os? - comp.lang.java.security Problem using EndNote addin with MS Word 2007 ... Eclipse Plugin - Export: class not found - comp.lang.java.gui ...It runs without any problems when I start it in my eclipse-development ... getResourceAsStream() problem - comp.lang.java.programmer ... I'm using these tools: Eclipse JEE ... Loading properties file in .war under JBoss - where do they belong ...Loading properties file in .war under JBoss - where do they belong ... getResourceAsStream() problem - comp.lang.java.programmer ... Loading properties file in .war under ... Reading properties file from WEB-INF/classes - comp.lang.java ...Reading properties file from WEB-INF/classes - comp.lang.java ... Reading properties file from WEB-INF/classes - comp.lang.java ... getResourceAsStream() problem - comp ... Problem using COM automation server out of .net-Application - comp ...getResourceAsStream() problem - comp.lang.java.programmer ... > > The problem turned out to be not in the actual Java code ... on the Tomcat server under the Server tab ... DataDirect SequeLink 5.4 problem - comp.databases.filemaker ...getResourceAsStream() problem - comp.lang.java.programmer ... DataDirect SequeLink 5.4 problem - comp.databases.filemaker ... Non-unique columns via ODBC driver ... how to deploy my java programs as a software package by including ...getResourceAsStream() problem - comp.lang.java.programmer ... how to deploy my java programs as a software package by including ... On my home computer (XP Pro), no problem. JAX-WS and RuntimeException in service implementation - comp.lang ...getResourceAsStream() problem - comp.lang.java.programmer ... I've written a very simple JAX-WS web service, here's the complete code: package ... is foundational, while ... OracleDriver load fails from a Web Service On tomcat - comp.lang ...OracleDriver load fails from a Web Service On tomcat - comp.lang ... getResourceAsStream() problem - comp.lang.java.programmer ... I've written a very simple JAX-WS web ... getResourceAsStream() problem - Java forums. Thousands of ...Hello, I have a problem with getResourceAsStream(). I'm using these tools: Eclipse JEE edition version 3.5.1 with the Apache CXF plugin and Apache Tomcat version 6.0.20. getResourceAsStream() problem - comp.lang.java.programmer ...Hello, I have a problem with getResourceAsStream(). I'm using these tools: Eclipse JEE edition version 3.5.1 with the Apache CXF plugin and Apach... 7/26/2012 9:09:38 PM
|