Exceptions between threads....

Hi all,
Was wondering if anyone could help. I am trying to catch an exception in a thread and throw it all the way "back into" the calling thread.
However, I don't seem to be able to do this (which I'm not actually surprised about), and I get the following exception:
Exception in thread "Thread-0" java.lang.NullPointerException
     at testproject.TestClass$1.run(TestClass.java:20)
From the following example code:
package testproject;
public class TestClass {
  public TestClass() {
    try {
      executeThread();
    } catch(NullPointerException exp) {
      System.out.println("Inside last try/catch");
      exp.printStackTrace();
  private void executeThread() throws NullPointerException {
    try {
      Thread t = new Thread(){
        public void run() {
          System.out.println("Starting execute");
          String testString = null;
          System.out.println(Thread.currentThread().getName());
          System.out.println(testString.substring(3));
      t.start();
    } catch(NullPointerException exp) {
      System.out.println("Inside thread try/catch");
      throw exp;
  public static void main(String args[]) {
    TestClass c = new TestClass();
}Any ideas how I can go about doing this, or the next best thing?
Thanks.

If you want the exception to be visible by another thread, then the run() method will have to NOT throw any exceptions, as far as I know. You can catch() any exceptions in the run() method itself, and set a property (such as the exception object itself) which can be retrieved by normal accessor methods by the other thread(s).
So the executeThread method could be rewritten like this:
MyThread t = new MyThread();
t.start();
t.join();
Exception e = t.getException();
if (e != null)
  throw e;
private class MyThread extends Thread {
// NOTE: You could (and should) implement Runnable instead
  private Exception ex;
  public Exception getException() { return ex; }
  public void run() {
    try {
      // implementation which may throw an exception...
    catch (Exception e) {
      ex = e;
}Message was edited by:
warnerja

Similar Messages

  • Help with "Exception in thread "Thread-4" java.lang.NullPointerException"

    I am new to Java and I am trying a simple bouncing ball example from Stanford. Here is their simple example that works.
    import acm.program.*;
    import acm.graphics.*;
    import java.awt.*;
    public class BouncingBallWorking extends GraphicsProgram {
    /** sets diameter */
    private static final int DIAM_BALL = 30;
    /** amount y velocity is increased each cycle */
    private static final double GRAVITY = 3;
    /** Animation delay or pause time between ball moves */
    private static final int DELAY = 50;
    /** Initial X and Y location ball*/
    private static final double X_START = DIAM_BALL / 2;
    private static final double Y_START = 100;
    private static final double X_VEL = 3;
    private static final double BOUNCE_REDUCE = 0.9;
    private double xVel = X_VEL;
    private double yVel = 0.0;
    private GOval BallA;
    public void run() {
    setup(X_START,Y_START);
    //         Simulation ends when ball goes off right hand
    //         end of screen
    while (BallA.getX() < getWidth()) {
    moveBall(BallA);
    checkForCollision(BallA);
    pause(DELAY);
    private void setup(double X_coor, double Y_coor) {
    BallA = new GOval(X_coor, Y_coor, DIAM_BALL, DIAM_BALL);
    add(BallA);
    private void moveBall(GOval BallObject) {
    yVel += GRAVITY;
    BallObject.move(xVel,yVel);
    private void checkForCollision(GOval BallObject) {
    if(BallObject.getY() > getHeight() - DIAM_BALL){
    yVel = - yVel * BOUNCE_REDUCE;
    double diff = BallObject.getY() - (getHeight() - DIAM_BALL);
    BallObject.move(0, -2 * diff);
    } Now I am trying to modify "setup" so it I can create several balls. I made a simple modification to "setup" and now I am getting an error.
    "Exception in thread "Thread-4" java.lang.NullPointerException
    at BouncingBallNotWorking.run(BouncingBallNotWorking.java:36)
    at acm.program.Program.runHook(Program.java:1592)
    at acm.program.Program.startRun(Program.java:1581)
    at acm.program.AppletStarter.run(Program.java:1939)
    at java.lang.Thread.run(Unknown Source)"
    Can you describe why I am getting an error? Thanks.
    Here is what I changed.
    Before:
         private void setup(double X_coor, double Y_coor) {
              BallA = new GOval(X_coor, Y_coor, DIAM_BALL, DIAM_BALL);
              add(BallA);
         }After:
         private void setup(double X_coor, double Y_coor, GOval BallObject) {
              BallObject = new GOval(X_coor, Y_coor, DIAM_BALL, DIAM_BALL);
              add(BallObject);
         }Here is the complete code.
    * File:BouncingBall.java
    * This program graphically simulates a bouncing ball
    import acm.program.*;
    import acm.graphics.*;
    import java.awt.*;
    public class BouncingBallNotWorking extends GraphicsProgram {
    /** sets diameter */
    private static final int DIAM_BALL = 30;
    /** amount y velocity is increased each cycle */
    private static final double GRAVITY = 3;
    /** Animation delay or pause time between ball moves */
    private static final int DELAY = 50;
    /** Initial X and Y location ball*/
    private static final double X_START = DIAM_BALL / 2;
    private static final double Y_START = 100;
    private static final double X_VEL = 3;
    private static final double BOUNCE_REDUCE = 0.9;
    private double xVel = X_VEL;
    private double yVel = 0.0;
    private GOval BallA;
    public void run() {
    setup(X_START,Y_START, BallA);
    //         Simulation ends when ball goes off right hand
    //         end of screen
    while (BallA.getX() < getWidth()) {
    moveBall(BallA);
    checkForCollision(BallA);
    pause(DELAY);
    private void setup(double X_coor, double Y_coor, GOval BallObject) {
    BallObject = new GOval(X_coor, Y_coor, DIAM_BALL, DIAM_BALL);
    add(BallObject);
    private void moveBall(GOval BallObject) {
    yVel += GRAVITY;
    BallObject.move(xVel,yVel);
    private void checkForCollision(GOval BallObject) {
    if(BallObject.getY() > getHeight() - DIAM_BALL){
    yVel = - yVel * BOUNCE_REDUCE;
    double diff = BallObject.getY() - (getHeight() - DIAM_BALL);
    BallObject.move(0, -2 * diff);
    } Edited by: TiredRyan on Mar 19, 2010 1:47 AM

    TiredRyan wrote:
    That is great! Thanks. I've got two question though.
    1.) Now I want to have 100 bouncing balls. Is the best way to achieve this is through an array of GOvals? I haven't gotten to the lecture on arrays on Stanford's ITunesU site yet so I am not sure what is possible with what I know now.An array would work, or a List. But it doesn't matter much in this case.
    2.) Are references being passed by value only applicable to Java or is that common to object-oriented programming? Also is there a way to force Java to pass in "BallA" instead of the value "null"?I can't say about all OO languages as a whole, but at least C++ can pass by reference.
    And no, there's no way to pass a reference to the BallA variable, so the method would initialize it and it wouldn't be null anymore.
    When you call the method with your BallA variable, the value of the variable is examined and it's passed to the method. So you can't pass the name of a variable where you'd want to store some object you created in the method.
    But you don't need to either, so there's no harm done.

  • "Portable" way to do message passing between threads?

    (I posted this on the Apple Developer Forums already, but since that forum is only accessible to registered and paid iPhone developers, I thought it would be nice to put it here as well so as to get some more potential eyeballs on it. I apologize if this kind of "cross-posting" is not kosher/is frowned upon around here.)
    Hey everybody,
    "Long-time listener, first-time caller," heh.
    I've been working for the past 2-3 months on my very first iPhone app. Actually, what I've been working on is a framework that I plan to use in an iPhone app of my own but which I am also trying to write for the "lowest-common-denominator" so that I (and others) can use it in other apps written for both Mac and iPhone.
    Not only is this my first time writing an iPhone app, it is my first time writing for any Apple platform. In fact, it is my first time using Objective-C, period. I cannot stress this enough: I am a "n00b." So go easy on me. I also have not worked with threading before this, either, on any platform, so the learning curve for me here is rather significant, I'm afraid. I am NOT afraid of either taking the time to learn something properly OR of rolling up my shirtsleeves and working. However, on account of my experiences so far, I am finding myself (not to flame or anything!) quickly becoming frustrated by and disillusioned with not so much Objective-C itself, but the Foundation frameworks.
    So with that said, read on, if you dare...
    The basic idea behind my project is that the framework I am writing will present an API to developers which will allow them to write client apps that interact with a particular network appliance or network-aware embedded system. I already have my basic set of classes up and functioning, and the framework works to my satisfaction both on MacOS and iPhoneOS. The platforms I am targeting are MacOS X Tiger 10.4 and later, and iPhoneOS, and up until this point, I've managed to keep a codebase that works on all of the above.
    What I wanted to do next was add some multithreaded goodness to the mix. (Woe is me.) I have asynchronous network socket I/O working within the main thread, and it, in fact, works a treat. In my test app on the phone, I've managed to keep the UI nice and responsive by using the main thread's runloop efficiently. But even though TCP async I/O works fine within the main thread, I want to be able to split out and offload the processing of any data received by the app from the appliance to its own thread. (It is possible, and even desirable, for an application using this framework to be connected to multiple appliances simultaneously.)
    My idea, in order to try to keep things as simple and as clean as possible, was to implement a wrapper class that presented my other main class as an "actor." So, rather than instantiating my main class, one would create an instance of the wrapper class which would in turn control a single instance of my main class and spawn its own thread that the network connection and all data processing for that particular connection would run within.
    (I hope I'm making sense so far...)
    Out of the gate, writing a subclass of NSThread sounds like the logical design choice for an "actor-type" thread, but because I was trying to maintain Tiger compatibility, I stuck with +detachNewThreadSelector:etc.
    Once I decided to pursue the actor model, though, the main problem presented itself: how to best pass messages between the main thread and all of the "actor" threads that might be spawned?
    I stumbled upon -performSelector:onThread:withObject:, and knew instantly that this was exactly what I was looking for. Unfortunately, it doesn't exist on Tiger; only its much more limited little brother -performSelectorOnMainThread:withObject: does. So I kept looking.
    All of the pre-Leopard documentation, tutorials, and sample code that I read indicated that to pass messages between threads, I needed to basically pretend that the threads were separate processes and use the expensive Distributed Objects mechanism to get messages back and forth. Unfortunately, even if that WAS a desirable option, iPhoneOS does not have any support for DO! Grrr...
    Finally, I thought I found the answer when I ran into a third-party solution: the InterThreadMessaging library from Toby Paterson (available @ http://homepage.mac.com/djv/FileSharing3.html). In this library, the author basically implemented his own version of -performSelector:onThread:withObject: called -performSelector:withObject:inThread:. Sounds close enough, right? And actually, it is pretty darn close. It's made to do exactly what it sounds like, and it does it in a platform-neutral way that works on pre-Leopard systems as well as iPhoneOS, using Mach ports instead of DO.
    (...wellll, ALMOST. I discovered after I built a small test app around it that it actually isn't "iPhone-clean." The author used an NSMapTable struct and the NSMap*() functions, which don't exist in iPhoneOS, and he also implemented the handlePortMessage delegate method, but although iPhoneOS has NSPort, it DOESN'T have NSPortMessage. GAAARGH. So I took the time to replace the NSMapTable stuff with NSValue-wrapped objects inside of an NSMutableDictionary, and replaced the handlePortMessage method implementation with a handleMachMessage method, which took some doing because I had to figure out the structure of a Mach message, NO thanks to ANY of the available documentation...)
    Once I started using it, though, I quickly discovered that this implementation wasn't up to snuff. My "actor" class and my main thread will be passing a ton of messages to each other constantly whenever there is network activity, and with InterThreadMessaging, I found that whenever activity started to ramp up, it would collapse on itself. This mostly took the form of deadlocks. I found a note that someone else wrote after experiencing something similar with this library (quoted from DustinVoss @ http://www.cocoadev.com/index.pl?InterThreadMessaging):
    "It is possible to deadlock this library if thread A posts a notification on thread B, and the notification on B causes a selector or notification to be posted on thread A. Possibly under other circumstances. I have resolved this in my own code by creating an inter-thread communication lock. When a thread wants to communicate, it tries the lock to see if another thread is already using the InterThreadMessaging library, and if it can't get the lock, it posts a message to its own run-loop to try again later. This is not a good solution, but it seems to work well enough."
    So I tried implementing what he described using a global NSLock, and it did help with some of the deadlocks. But not all. I believe the culprit here is the Mach ports system itself (from the NSPortMessage documentation for -sendBeforeDate:):
    "If the message cannot be sent immediately, the sending thread blocks until either the message is sent or aDate is reached. Sent messages are queued to minimize blocking, but failure can occur if multiple messages are sent to a port faster than the portís owner can receive them, causing the queue to fill up."
    InterThreadMessaging in fact calls -sendBeforeDate: and exposes the deadline option, so I tried setting a really short time-to-live on the Mach messages and then intercepted any NSPortTimeoutExceptions that were thrown; upon catching said exceptions, I would then re-queue up the message to be sent again. It worked, but Performance. Was. A. Dog. At least the message queue wouldn't be full indefinitely anymore, causing the main thread to block, but during the whole time that these messages were expiring because the queue was full and then being re-queued, either the main thread was trying to send more messages or the actor thread was trying to send more messages. And as far as I can tell, the Mach ports queue is global (at the very least, there is seemingly only one per process). The message would get through with this model...eventually.
    JUST IN CASE the problem happened to be something I screwed up as I was rewriting portions of the InterThreadMessaging library so that it would compile and work on the iPhone SDK, I substituted in the original version of the library in my Mac test app to see if any of these problems became non-issues. I found that both versions of the library -- mine and the original -- performed identically. So that wasn't it.
    Finally, in frustration I said, "screw it, I'm going to try it the Leopard way," and replaced all of the method calls I was making to InterThreadMessaging's -performSelector:withObject:inThread: with calls to Foundation's native -performSelector:onThread:withObject: instead, changing nothing else within my code in the process. And wouldn't you know: IT WORKED GREAT. Performance was (and is) fantastic, about on-par with the non-threaded version when only dealing with a single connection/instance of my class.
    So, in the end, I was able to do nothing to salvage the InterThreadMessaging implementation of cross-thread method calling, and as far as I can tell, I'm out of (good) options. And thus my mind is filled with questions:
    How is the Leopard -performSelector:onThread: method implemented? I'm guessing not using Mach ports, given that I didn't have the same blocking & deadlocking problems I had with InterThreadMessaging. Is it possible to re-implement this Leopard+ method in a similar manner as a category to NSObject under Tiger? Or is it possible, perhaps, to increase the size of the Mach ports queue so that InterThreadMessaging works at a sane level of performance? Or -- I'm getting desperate here -- is there any way that I could trick -performSelectorOnMainThread: to target a different thread instead? (I am assuming here that -performSelectorOnMainThread is implemented under-the-hood much like the new -performSelector:onThread: is implemented, but with a hard-coded NSThread pointer built-in to the code, and that the new method just exposes a more flexible interface to what is basically the same code. I'm probably wrong...) Is there another third-party library out there that I've missed that fits my requirements for being able to do message-passing between threads in an efficient and portable manner?
    I refuse to believe that there is no way for me to maintain compatibility with all of the platforms I wish to support without having to resort to making preprocessor #ifdef spaghetti out of my code. And there SURELY has to be a better way of doing cross-thread message passing in Tiger without using Distributed Objects, for Pete's sake! Is this really how people did it for years-on-end since the dawn of NeXT up until the advent of Leopard? And if there really, genuinely wasn't another alternative, then what is up with the lack of DO in iPhoneOS?? Does Apple seriously intend for developers who have good, solid, tested and working code to just chuck it all and start over? What if there was some aspect of DO that previous implementations relied upon that cannot be recreated with simple -performSelector:onThread: calls? (I don't know what those aspects would be...just a hypothetical.) I mean, I can understand needing to write new stuff from scratch for your UI given how radically different the interface is between the Mac and iPhone, but having to reimplement back-end guts such as something as elemental as threads...really?!
    I do laud the inclusion of the new method in Leopard as well as the new ability to subclass NSThread itself. But for those of us that need to support Tiger for one reason or another, some of these restrictions and omissions within iPhoneOS seem like rather pointless (and frustrating) roadblocks.
    As I hope is obvious here, I have tried to do my homework before throwing up my hands and pestering y'all. If you have the patience to deal with me, please tell me what I am missing.
    Thanks for taking the time to read,
    -- Nathan

    Thanks again for your patience. Comments below.
    etresoft wrote:
    It is pretty unusual that anyone would want to call perfomrSelector on any thread other than the main thread.
    What I described in my original post was not a worker thread, but an "actor."
    It is hard for me to answer this question because there are so many options available to do "message passing". The fact that you think there are so few tells me that you really aren't sure what you need to use.
    I didn't say there were few options for message passing. I said there were few options for message passing that fit my criteria, which are that any potential solutions should both A) work efficiently and with good performance, and B) be available both pre-Leopard AND on the iPhone. -performSelector: ain't available before Leopard. Distributed Objects is overkill. Kernel Mach messages apparently have a high overhead, too, as my experience with the third-party library I wrote about in my original message shows.
    ...consider notifications.
    I thought notifications couldn't be posted across threads, either. How do I post a notification to another thread's default notification center or notification queue from a different thread?
    The notification center is owned by the process. Each run loop can listen for just the notifications it wants. You don't "pass" or "send" notifications, you run then up the flagpole for all to see.
    I am aware of how to use notifications. The documentation for NSNotificationCenter clearly states that "In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself."
    So, again, I don't see how one thread can post a notification in such a way that the observer's registered method is executed in another thread (posting notifications "across threads"). This probably isn't a big deal if you are using mutexes (assuming you don't actually care which thread carries out the task associated with the notification posting), but as I said before, this is not what I'm after.
    I don't know what you are really after.
    Allow me to attempt to explain a second time, in a more concise fashion.
    My app will have multiple, persistent TCP connections open, one connection per remote device. The user will be able to select a task to execute on a particular device that we have a connection open to, and get back from the application real-time updates as to the progress or results of the execution of that task. In certain cases, the length of the task is infinite; it will keep executing forever and sending back results to my application which will update its display of the results every second that ticks by until the user STOPS that particular task.
    This can be done simply using async I/O in the main runloop, sure. But if I were going to thread this so that I could be processing the results I've received back from one *or more* remote devices while also doing something else, given that I will only have one (persistent) connection open to any given remote device that I'm interacting with (that is to say, I won't be opening up a separate TCP session for every single task I want to execute on a single device simultaneously), it makes sense _to me_ to implement this as I've described: with every connection to each remote device getting its own thread that lasts for the lifetime of the TCP session (which could be the entire time the application is running, times however many devices the user wishes to be connected to while in the app). I won't be spawning a new thread for every task the user wishes to ask a remote device to do.
    This is why (I think) I need bi-directional messaging between the main thread and each of these threads dedicated to a given remote device that we have an active session with/connection to. The main thread needs to be able to tell remote device X (which already has a running thread dedicated to it) to do task A, and then get real-time feedback from that remote device so that the main thread can be displaying it to the user as it is coming back. Same with remote device Y running task B, simultaneously. At any time during the execution of these tasks, the user needs to be able to tell my app to stop one of these tasks, and the main thread needs to send that message to one of the remote devices via that device's dedicated thread.
    This is why I am talking about this in terms of the "actor model," and not the "worker thread model," because the former model seems to fit what I want to do.
    -- Nathan

  • On starting WebLogic getting Error : Listening for transport dt_socket at address: 8453 Exception in thread "main" java.lang.NoClassDefFoundError: vXmx512m

    Hi,
    system i am using for Oracle SOA is :
    Windows 64 Bit
    i5 Processor
    6 GB RAM
    29 GB on C Drive is already free after installation of all SOA related products.
    I have installed wlserver_10.3 for SOA 11g Development purpose and followed exact installation sequence and procedure as mention in oracle documentation
    i created domain also and every thing look correct but after installation procedure there are "Additional actions required just after every thing installed" :
    setting memory limit
    starting weblogic server (Admin Server)
    starting weblogic managed server
    and so on
    now Problem is when i execute C:\Oracle\Middleware\user_projects\domains\soa_div_domain\bin startWebLogic.cmd
    as mention in oracle documentation i am getting following error message : (i have only included last error lines instead of complete console log)
    oConsole= -Dweblogic.ext.dirs=C:\Oracle\MIDDLE~1\patch_wls1036\profiles\default\
    sysext_manifest_classpath;C:\Oracle\MIDDLE~1\patch_oepe180\profiles\default\syse
    xt_manifest_classpath;C:\Oracle\MIDDLE~1\patch_ocp371\profiles\default\sysext_ma
    nifest_classpath;C:\Oracle\MIDDLE~1\patch_adfr1111\profiles\default\sysext_manif
    est_classpath  weblogic.Server
    Listening for transport dt_socket at address: 8453
    Exception in thread "main" java.lang.NoClassDefFoundError: vXmx512m
    Caused by: java.lang.ClassNotFoundException: vXmx512m
            at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    Could not find the main class: ++Xmx512m.  Program will exit.
    Now to resolve this what i already tried are :
    I change JAVA_HOME and PATH to jdk6 which came with web logic installer
    Location is at :
    JAVA_HOME : C:\Oracle\Middleware\jdk160_29
    PATH : C:\Oracle\Middleware\jdk160_29\bin
    The above dose not include any space between path
    I ran the startWebLogic.cmd and got same error
    After that I also added
    CLASSPATH : C:\Oracle\Middleware\jdk160_29\lib\tool.jar;C:\Oracle\Middleware\wlserver_10.3\server\lib\weblogic.jar;C:\Oracle\Middleware\jdk160_29\bin
    WL_HOME:  C:\Oracle\Middleware\wlserver_10.3
    I ran the startWebLogic.cmd and got same error
    I also used earlier path which I used with eclipse when I was working on other java development.
    JAVA_HOME : C:\Program Files\Java\jdk1.7.0_21
    PATH : C:\Program Files\Java\jdk1.7.0_21\bin
    I ran the startWebLogic.cmd and got same error
    Then I also gave PATH: C:\Oracle\Middleware\wlserver_10.3\server\lib      (including the existing one using ; )
    I ran the startWebLogic.cmd and got same error
    Now may be there is a file called setSOADomainEnv.cmd in
    < C:\Oracle\Middleware\user_projects\domains\soa_div_domain\bin\ setSOADomainEnv.cmd>
    That include some values for memory set :
    set JAVA_OPTIONS=%JAVA_OPTIONS%
    set DEFAULT_MEM_ARGS=-Xms512m –Xmx512m
    set PORT_MEM_ARGS=-Xms512m –Xmx768m
    if "%JAVA_VENDOR%" == "Oracle" goto OracleJVM
    set DEFAULT_MEM_ARGS=%DEFAULT_MEM_ARGS% -XX:PermSize=128m -XX:MaxPermSize=768m
    set PORT_MEM_ARGS=%PORT_MEM_ARGS% -XX:PermSize=256m -XX:MaxPermSize=768m
    now as I change the red highlighted value to 512 value because I have less memory resource and I checked in installation documentation to change the above red highlighted value to 512 original is 1024 which is too high and it was crating problem and showing memory space problem so I change it to 512 and now I am not getting that memory space problem error but may be the above error is related with change value in setSOADomainEnv.cmd file or not
    Following are my domain, weblogic and soa home directory path and all these path are exactly what it suppose to be according to Oracle Installation Documentation:
    WebLogic :
    C:\Oracle\Middleware\wlserver_10.3
    C:\Oracle\Middleware\coherence_3.7
    C:\Oracle\Middleware\oepe_11.1.1.8.0
    SOA Oracle Home Directory :
    C:\Oracle\Middleware\Oracle_SOA1
    OSB Home Location :
    C:\Oracle\Middleware\Oracle_OSB1
    Domain name : soa_div_domain
    Domain Location :       C:\Oracle\Middleware\user_projects\domains
    Application Location :  C:\Oracle\Middleware\user_projects\applications
    Domain Location:        C:\Oracle\Middleware\user_projects\domains\soa_div_domain
    form here i am trying to start weblogic : C:\Oracle\Middleware\user_projects\domains\soa_div_domain\bin\startWebLogic.cmd
    Please tell me any body want more details.
    Thanks.

    I think you are missing a character '-'
    USER_MEM_ARGS="Xms512m -Xmx512m -XX:MaxPermSize=128m"Add this character like follows
    "-Xms512m -Xmx512m -XX:MaxPermSize=128m"

  • Transfering Data Between threads via Piped Streaming

    Hi There
    I want to send and recive objecs between threads this is just test class for this reson but it does not work and it throus this exception
    NOTE : when I use PipedInputStream and PipedOutputStream with out ObjectOutputStream and ObjectInputStream it works fine
    java.io.IOException: Write end dead
    at java.io.PipedInputStream.read(PipedInputStream.java:244)
    at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2200)
    at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2490)
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2500)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1267)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
    at IOProblem.run(IOProblem.java:34)
    And this is the test code
    import java.io.*;
    public class IOProblem extends Thread{
         private ObjectOutputStream out;
         private ObjectInputStream in;
         private PipedOutputStream pipeOut;
         private PipedInputStream  pipeIn ;
         public IOProblem(){
              try{
                   pipeOut = new PipedOutputStream();
                   pipeIn  = new PipedInputStream(pipeOut);
                   out = new ObjectOutputStream(pipeOut);
                   in = new ObjectInputStream(pipeIn);
              catch(Exception ex){
                   ex.printStackTrace ();
                   System.exit (1);
        public void run()
              try{
                   System.out.println(in.readObject());
                   out.writeObject("End");
                   System.out.println(in.readObject());
              catch(Exception ioEx){
                   ioEx.printStackTrace ();
              System.gc();
        }//End of Run
         public static void main(String []args)
              (new IOProblem()).start();
    }Thanks In advance.

    You only have one thread. Each end need its own. See this for examples:
    http://www.google.com/search?q=java+pipe+tutorial
    I would sugges that you instead use a circular buffer, it's an easier implementation:
    http://www.google.com/search?q=ostermiller+circular+buffer

  • Exception in thread "main" java.lang.NoClassDefFoundError: Files\Apache

    Hi,
    I am new to smart card.I have installed and configured the JCDK.When i try to run the build_sample.bat,I got the following error.
    Exception in thread "main" java.lang.NoClassDefFoundError: Files\Apache
    can you guys give me the solution please.Thank you.
    Sankar

    hi
    Thank you..yes really when i check the class path in my environment,i saw the spaces between the Program Files.this i was set for my tomcat server.so its taken Apache as a file.
    regards
    sankar

  • Exception in thread "main" java.lang.NoClassDefFound

    C:\myjava>java JdbcCheckup
    Exception in thread "main" java.lang.NoClassDefFoundError: JdbcCheckup
    C:\myjava>java -cp %CLASSPATH%; . JdbcCheckup
    Exception in thread "main" java.lang.NoClassDefFoundError: c:\tomcat_4\common\li
    b\servlet/jar;
    C:\myjava>
    here is my classpath. There is 'c:\tomcat_4\common\lib\servlet/jar;' its listed as a .jar file?
    why cant i compile?
    CLASSPATH=c:\oracle\ora81\jdbc\lib\classes12.zip; c:\tomcat_4\common\lib\serv
    t.jar; c:\eclipse; c:\tomcat_4\examples\WEB-INF\classes;c:\oracle\ora81\jlib\b
    raphbean.jar;c:\oracle\ora81\jlib\LW_PfjBean.jar;c:\oracle\ora81\jlib\bigraphb
    n-nls.zip

    Either remove the erroneous spaces between your classpath elements, or do:
    java -cp "%CPASSPATH";." JdbcCheckup
    (notice the double-quotes)
    The way you did it, as soon as it saw the first space (after your classes12.zip entry), it thought that was the end of the classpath.

  • Exception in thread "RMI

    Hello, I configure dbcache 90m for my data and heap size is 150m, but when I run multi-thread update on my store, the exception happened, and I can't restart the SN.
    by the way, I have followed the introduction for compute dbcache and heap size.
    03-09-12 11:33:19:81 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: Exception in thread "RMI TCP Connection(idle)" Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    03-09-12 11:33:19:83 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: Process exiting due to fault
    03-09-12 11:33:19:83 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: Process exiting due to fault
    03-09-12 11:33:19:83 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: java.lang.OutOfMemoryError: Java heap space
    03-09-12 11:33:19:83 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: java.lang.OutOfMemoryError: Java heap space
    03-09-12 11:33:20:95 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: IOThread exiting
    03-09-12 11:33:20:95 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: exited, exit code: 200
    03-09-12 11:33:23:45 UTC+8 INFO [admin1] [sn1] rg1-rn1: Service status: ERROR_RESTARTING 03-09-12 11:33:20
    03-09-12 11:33:20:96 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: restartProcess called, totalRestarts is 2, restartCount is -1
    03-09-12 11:33:20:96 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: startProcess
    03-09-12 11:33:21:47 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: Java HotSpot(TM) Server VM warning: Failed to reserve shared memory (errno = 12).
    03-09-12 11:33:21:46 UTC+8 INFO [rg1-rn1] RepNodeStateUpdateThread started
    03-09-12 11:33:21:52 UTC+8 INFO [rg1-rn1] Partition db cache mode: EVICT_LN
    03-09-12 11:33:21:63 UTC+8 INFO [rg1-rn1] JVM Runtime maxMemory (bytes): 99811328
    03-09-12 11:33:21:64 UTC+8 INFO [rg1-rn1] Non-default JE properties for environment: {je.rep.vlsn.logCacheSize=128, je.rep.envUnknownStateTimeout=10 s, je.tree.maxDelta=10, je.log.faultReadSize=4096, je.rep.vlsn.distance=1000000, je.env.runEvictor=true, je.cleaner.minUtilization=40, je.rep.replicaAckTimeout=5 s, je.cleaner.threads=2, je.evictor.lruOnly=false, je.rep.replayMaxOpenDbHandles=100, je.log.writeQueueSize=2097152, je.evictor.criticalPercentage=105, je.log.iteratorReadSize=1048576, je.log.numBuffers=16, je.nodeMaxEntries=128, je.evictor.nodesPerScan=200, je.rep.preHeartbeatTimeoutMs=5000000000, je.checkpointer.bytesInterval=200000000, je.cleaner.lazyMigration=false, je.txn.durability=write_no_sync,write_no_sync,simple_majority, je.cleaner.readSize=1048576, je.rep.txnRollbackLimit=10, je.log.fileCacheSize=2000, je.log.fileMax=1073741824}
    03-09-12 11:33:21:69 UTC+8 INFO [rg1-rn1] Starting RepNodeService
    03-09-12 11:33:21:82 UTC+8 INFO [rg1-rn1] Starting MonitorAgent
    03-09-12 11:33:21:85 UTC+8 INFO [rg1-rn1] RepNodeAdmin registered
    03-09-12 11:33:22:24 UTC+8 INFO [rg1-rn1] JE recovery: FIND_END_OF_LOG
    03-09-12 11:33:26:97 UTC+8 INFO [rg1-rn1] JE recovery: FIND_LAST_CKPT
    03-09-12 11:33:26:98 UTC+8 INFO [rg1-rn1] JE recovery: READ_DBMAP_INFO
    03-09-12 11:33:41:49 UTC+8 INFO [rg1-rn1] JE recovery: UNDO_DBMAP_RECORDS
    03-09-12 11:33:43:51 UTC+8 INFO [admin1] [rg1-rn1] Service status: STARTING 03-09-12 11:33:43
    03-09-12 11:34:18:67 UTC+8 INFO [sn1] sn1: Shutdown starting, stopping services
    03-09-12 11:34:18:67 UTC+8 INFO [sn1] Service status changed from RUNNING to STOPPING
    03-09-12 11:34:23:44 UTC+8 INFO [admin1] [sn1] Service status: STOPPING 03-09-12 11:34:18
    03-09-12 11:35:04:24 UTC+8 SEVERE [sn1] Cannot get RepNodeAdmin handle from Registry: rg1-rn1: Error unmarshaling return; nested exception is:
    java.io.EOFException
    03-09-12 11:35:04:24 UTC+8 WARNING [sn1] rg1-rn1: Exception stopping RepNode: Cannot get RepNodeAdmin handle from Registry: rg1-rn1: Error unmarshaling return; nested exception is:
    java.io.EOFException; nested exception is:
    java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
    java.io.EOFException
    03-09-12 11:35:04:24 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: stopProcess
    03-09-12 11:35:05:66 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: IOThread exception: Stream closed
    03-09-12 11:35:05:66 UTC+8 INFO [sn1] rg1-rn1: ProcessMonitor: IOThread exiting
    03-09-12 11:36:05:16 UTC+8 INFO [admin1] [admin1] rg1-rn1: Service status: UNREACHABLE 03-09-12 11:36:05

    foreversunyao wrote:
    Hello,
    I assign 90M which is computed by "java -jar je.jar DbCacheSize -records 1000000 -key 10 -data 20", and 90M is more than the max Bytes for Cache Size.
    bty, I want to know what is the difference between "Database Cache Size" and "internal Node Usage by Btree Level" ? How do I set the value for both?Could you please send any policy parameters that you are setting in your configuration step?
    The Internal Node Usage by Btree Level is an estimate of how much space the Internal Nodes of the B-tree will take in the cache. It is not a parameter -- only an estimate given by DbCacheSize. The Database Cache Size can be set with
    set policy "cacheSize=nnnnnn"
    in the NoSQL Database configuration.
    Charles

  • Exception in thread "main" java.lang.NoClassDefFoundError in Textpad

    Hello to everybody:
    I programed in java some time ago and now i'm trying to recycle and start again with it. I was programming using Textpad and compiling and excuting the files from there. Now i'm trying to configure it the same way that i had it some time ago. But i'm not able.
    My program is just a operation of 2 numbers. I know it's so dumb :P but i'm trying to learn again. I can compile it (Ctrl+1, using the instruction javac of j2sdk1.4.2_13) but when i try to execute (Ctrl+2, instruction java.exe) i throws me this error:
    Exception in thread "main" java.lang.NoClassDefFoundError: 6
    where "6" is the first parameter for the program.
    I put the CLASSPATH in enviromental variables
    CLASSPATH: C:\j2sdk1.4.2_13\bin;.
    PATH: C:\j2sdk1.4.2_13\bin (this last one after all the others that existed before and separated by ";" )
    If i try to execute it from the promp using the instructions javac.exe and java.exe it works ok. And using NetBeans too. So i have to think it's sth from textpad.
    Can somebody help me? Thank you to everybody for your time.

    Hey, first of all thank you for your help again.
    I'm trying to execute it in the textpad itself. You press Ctrl+2 and appears a window to put the arguments. So there's a parameter called $File (maybe that's the problem, this name should be another one), the name of the current project you're trying to execute. I've tried to put the class name between but it threw me the same error changing the parameter for the class name. So finally i've put the name of the project without extension and after it the arguments, and it has work. I'll go on looking for the parameter to substitute the project name.
    Thank you for all your help. It's the first time i enter in a forum and you've been really helpful. Tahnk you so much. Sure you'll see me here again,, cos i'm a kid of rookie:P

  • Exception in thread "Main Thread" java.lang.NoClassDefFoundError: weblogic/

    hi,
    I am getting error message when i run HttpClient in my java class. Will the HttpClient will work in weblogic.
    HttpClient httpclient = new HttpClient();
    I added "commons-httpclient-3.1.jar" in the class path also.
    Exception in thread "Main Thread" java.lang.NoClassDefFoundError: weblogic/kernel/KernelLogManager
         at weblogic.logging.commons.LogImpl.<init>(LogImpl.java:14)
         at weblogic.logging.commons.LogFactoryImpl.getInstance(LogFactoryImpl.java:21)
         at weblogic.logging.commons.LogFactoryImpl.getInstance(LogFactoryImpl.java:18)
         at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
    Thanks
    Manu

    Again you need to make a difference between what runs within the weblogic container to what runs in a vanilla JVM. Understanding this is crucial to your problem.
    1. web service -> client -> another web service
    The webservice will always run within the weblogic container and you should never get the ClassnotFound because weblogic.jar is always available there. Any subsequent clients loaded into the same JVM will presumably be in the same classloader and wont have problems either
    2. client -> web service;
    If you are using a standalone client in a JVM you shouldnt have any dependency on weblogic and commons-httpclient will work just fine as would commons-logging. However if you include some weblogic jars in the classpath, when you launch the client JVM you would need to include the jars mentioned in the other post because they reference other weblogic classes. But this isn't necessary if you just clean up your classpath to only have the jars you need.

  • Why : Exception in thread

    Hi guys again it's me;
    Rushing up for a project is really not good(especially for a beginner). I have this program which indicates a person's travel diary randomly. the program that I write should indicate normally;
    House : frequence 2
    SportsCentre : frequence 3
    and so on...
    The problem is there is a
    Exception in thread "main" java.lang.NullPointerException
    everytime I execute it. Only some random times, it gets to show a line or two.
    I blinded sitting in front of the comp for so long, so I'm really hoping someone could explain the error to me. Here are the codes;
    import java.util.Random;
    Deplacement class
    public class Deplacement
         /**listing of all the places the cadre(executive) can go
         private final int location;
              public final static int house   = 1;
              public final static int company = 2;
              public final static int sportscentre = 3;
              public final static int restaurant  = 4;
              public final static int restouniv  = 5;
              public final static int ASSEDIC   = 6;
              public final static int school = 7;
         public Deplacement(int location, int freq)
                 assert isValidLocation(location);
                 this.location = location;
         public int getLocation()
            return location;
         public static int getRandom(int start, int end) //generates random between 2 numbers
              Random f = new Random();
              int frequence = f.nextInt(end - start + 1) + start;
              return frequence;
         public static boolean isValidLocation(int location) {
            return house <= location && location <= school;
         public static String locationToString(int location)
                  switch (location)
                  case house: return "House";
                  case company: return "Company";
                  case sportscentre: return "Sports Centre";
                  case restaurant: return "Restaurant";
                  case restouniv: return "Resto-U";
                  case ASSEDIC: return "ASSEDIC";
                  case school: return "School";
                   return null;
             }Table class
    public class Table
         public static int numLocation = 7;
        public static int numFrequence = 11;
        private Deplacement[][] table;
        public Table()
            table = new Deplacement[numLocation][numFrequence];
            for (int location = Deplacement.house;
                 location <= Deplacement.school; location++)
               int frequence = 1;
               table [location-1][Deplacement.getRandom(0, 10)] = new Deplacement(location, frequence);
        public Deplacement getDeplacement(int location, int frequence)
            return table [location-1][frequence];
    }Simulate class
    public class Simulate
         private static final int frequence = 0;
         public static void main(String[] args)
            Table table = new Table();
            for (int location = Deplacement.house; location <= Deplacement.school; location++)
                    Deplacement simulate = table.getDeplacement(location, frequence);
                    System.out.printf("%s : fr�quence %d \n", simulate.locationToString(simulate.getLocation()),(simulate.getRandom(0, 10)));  // <--exception is generated here
    }Really hoping you guys could paste this in, and tell me voila here the error. I don't understand why the exception is generated. Been looking at it for 2hours. Please help.

    System.out.printf("%s : fr�quence %d \n",simulate.locationToString(simulate.getLocation()),(sim
    ulate.getRandom(0, 10))); // <--exception is
    generated here
    Ok, so simulate is null, and you're trying to invoke
    methods(locationToString, getLocation, and getRandom)
    on a null object reference, which is illegal of
    course.
    Deplacement simulate =table.getDeplacement(location, frequence);
    getDeplacement must sometimes return null depending
    on what data you pass it. Check it!
    if (simulate == null)
    System.out.println("OOPS! I'd better fix this!");
    else
    System.out.println("%s : fr�quence .........
    }I took care of the exception in Class Simulate. SO it looks like this.
    public class Simulate
         private static final int frequence = 0;
         public static void main(String[] args)
            Table table = new Table();
            for (int location = Deplacement.house; location <= Deplacement.school; location++)
                   try
                        Deplacement simulate = table.getDeplacement(location, frequence);
                       System.out.printf("%s : fr�quence %d \n",
                                 simulate.locationToString(simulate.getLocation()),(simulate.getRandom(0, 10)));
                   catch (java.lang.NullPointerException npe)
                        System.out.println("WHY");
        }Sample results...
    WHY
    WHY
    Sports Centre : fr�quence 4
    WHY
    WHY
    WHY
    WHY
    I'm sorry, but I might not get the idea. How can getDeplacement(location, frequence) egals null when I actually have all the locations from 1-7(house to school) and a frequence that can take only int from 0-10? I suspect the random method that returned a null frequence but how is that possible? Can anybody help? Thank you.

  • Exception in thread "main" java.lang.NoClassDefFoundError

    Am using java 1.3.1 on Red Hat Linux 7.1
    i get this error
    Exception in thread "main" java.lang.NoClassDefFoundError
    while running a simple program HelloWorld.java
    help

    When you use the "java" command, the only required argument is the name of the class that you want to execute. This argument must be a class name, not a file name, and class names are case sensitive. For example, "java HelloWorld.java" won't work because the class name isn't HelloWorld.java, it's HelloWorld. Similarly, "java helloworld" won't work because a class defined as "public class HelloWorld {" is not named helloworld due to case sensitivity. Finally, the .class file must be in a directory that is in the Classpath - that's where java.exe searches to find the file that contains the class.

  • Exception in thread

    Hello,
    The problem is inside the method "chamaConversor".
    " conversor.pdfToText(arquivoPdf,arquivoTxt);" make a file.txt from one file.pdf. After that it don?t return the control to "ConstrutorDeTemplate2.java", and show the following error message:
    Exception in thread "AWT-EventQueue-O" java.lang.NoClassDefFoundError : org/fontbox/afm/FontMetric
    at org.pdfbox.pdmodel.font.PDFont.getAFM (PDFont.java:334)
    I am using the NetBeans IDE 5.5.
    I have added all of these libraries below to my project from c:\Program Files\netbeans-5.5\PDFBox-0.7.3\external:
    * FontBox-0.1.0-dev.jar
    * ant.jar
    * bcmail-jdk14-132.jar
    * junit.jar
    * bcprov-jdk14-132.jar
    * lucene-core-2.0.0.jar
    * checkstyle-all-4.2.jar
    * lucene-demos-2.0.0.jar
    and PDFBox-0.7.3.jar from c:\Program Files\netbeans-5.5\PDFBox-0.7.3\lib.
    There are no more jar from PDFBox-0.7.3 directory.
    All of these libraries are in "Compile-time Libraries" option in Project Properties. Should I add they to "Run-time Libraries" option?
    What is going on?
    Thank you!
      * ConstrutorDeTemplate2.java
      * Created on 11 de Agosto de 2007, 14:54
      * @author
    package br.unifacs.dis2007.template2;
    // Java core packages
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.text.*;
    import java.util.*;
    // Java extension packages
    import javax.swing.*;
    import org.pdfbox.*;
    public class ConstrutorDeTemplate2 extends JFrame
        implements ActionListener {
        private JTextField enterField;
        private JTextArea outputArea;
        private BufferedWriter out;
        private String word;
        private PdfToText conversor = new PdfToText();
        // ajusta a interface do usu?rio
        public ConstrutorDeTemplate2()
           super( "Testing class File" );
           enterField = new JTextField("Digite aqui o nome do arquivo :" );
           enterField.addActionListener( this );
           outputArea = new JTextArea();
           ScrollPane scrollPane = new ScrollPane();
           scrollPane.add( outputArea );
           Container container = getContentPane();
           container.add( enterField, BorderLayout.NORTH );
           container.add( scrollPane, BorderLayout.CENTER );
           setSize( 400, 400 );
           show();
        // Exibe as informa??es sobre o arquivo especificado pelo usu?rio
        public void actionPerformed( ActionEvent actionEvent )
           File name = new File( actionEvent.getActionCommand() );
           // Se o arquivo existe, envia para a sa?da as informa??es sobre ele
           if ( name.exists() ) {
              outputArea.setText(
                 name.getName() + " exists\n" +
                 ( name.isFile () ?
                    "is a file\n" : "is not a file\n" ) +
                 ( name.isDirectory() ?
                    "is a directory\n" : "is not a directory\n" ) +
                 ( name.isAbsolute() ? "is absolute path\n" :
                    "is not absolute path\n" ) +
                 "Last modified: " + name.lastModified() +
                 "\nLength: " + name.length () +
                 "\nPath: " + name.getPath() +
                 "\nAbsolute path: " + name.getAbsolutePath() +
                 "\nParent: " + name.getParent() );
              // informa??o de sa?da se "name" ? um arquivo
              if ( name.isFile() ) {
                 String nameString = String.valueOf(name.getPath());
                 String nameTeste = new String(nameString);
                 if (nameString.endsWith(".pdf"))
                     nameTeste = chamaConversor(nameString);
                 else
                     if (nameString.endsWith(".doc"))
                         nameTeste = chamaConversorDoc(nameString); // chama conversor de arquivos DOC
                     else
                         if (nameString.endsWith(".txt"))
                             nameTeste = nameString;
                 // se o arquivo termina com ".txt"           
                 if (nameTeste.endsWith(".txt"))
                     // acrescenta conte?do do arquivo ? ?rea de sa?da
                     try {
                         // Create the tokenizer to read from a file
                         FileReader rd = new FileReader(nameTeste);
                         StreamTokenizer st = new StreamTokenizer(rd);
                         // Prepare the tokenizer for Java-style tokenizing rules
                         st.parseNumbers();
                         st.wordChars('_', '_');
                         st.eolIsSignificant (true);
                         // If whitespace is not to be discarded, make this call
                         st.ordinaryChars(0, ' ');
                         // These calls caused comments to be discarded
                         st.slashSlashComments(true);
                         st.slashStarComments(true);
                         // Parse the file
                         int token = st.nextToken();
                         String word_ant = "";
                         outputArea.append( " \n" );
                         out = new BufferedWriter(new FileWriter(nameTeste, true));
                         while (token != StreamTokenizer.TT_EOF) {
                             token = st.nextToken();
                             if (token == StreamTokenizer.TT_EOL){
                                 //out.write(word);
                                 out.flush();
                                 out = new BufferedWriter(new FileWriter(nameTeste, true));
                                 //outputArea.append( word + "\n" );
                                 // out.append ( "\n" );
                             switch (token) {
                             case StreamTokenizer.TT_NUMBER:
                                 // A number was found; the value is in nval
                                 double num = st.nval;
                                 break;
                             case StreamTokenizer.TT_WORD:
                                 // A word was found; the value is in sval
                                 word = st.sval;
                                 //   if (word_ant.equals("a") || word_ant.equals("an") || word_ant.equals("the") || word_ant.equals("The") || word_ant.equals("An"))
                                 outputArea.append( word.toString() + " \n " );
                                // out.append( word + "   " );
                                 //     word_ant = word;
                                 break;
                             case '"':
                                 // A double-quoted string was found; sval contains the contents
                                 String dquoteVal = st.sval;
                                 break;
                             case '\'':
                                 // A single-quoted string was found; sval contains the contents
                                 String squoteVal = st.sval;
                                 break;
                             case StreamTokenizer.TT_EOL:
                                 // End of line character found
                                 break;
                             case StreamTokenizer.TT_EOF:
                                 // End of file has been reached
                                 break;
                             default:
                                 // A regular character was found; the value is the token itself
                                 char ch = (char)st.ttype;
                                 break;
                             } // fim do switch
                         } // fim do while
                         rd.close();
                         out.close();
                     } // fim do try
                     // process file processing problems
                     catch( IOException ioException ) {
                         JOptionPane.showMessageDialog( this,
                         "FILE ERROR",
                         "FILE ERROR", JOptionPane.ERROR_MESSAGE );
                 } // fim do if da linha 92 - testa se o arquivo ? do tipo texto
              } // fim do if da linha 78 - testa se ? um arquivo
              // output directory listing
              else if ( name.isDirectory() ) {
                     String directory[] = name.list();
                 outputArea.append( "\n\nDirectory contents:\n");
                 for ( int i = 0; i < directory.length; i++ )
                    outputArea.append( directory[ i ] + "\n" );
              } // fim do else if da linha 184 - testa se ? um diret?rio
           } // fim do if da linha 62 - testa se o arquivo existe
           // not file or directory, output error message
           else {
              JOptionPane.showMessageDialog( this,
                 actionEvent.getActionCommand() + " Does Not Exist",
                 "ERROR", JOptionPane.ERROR_MESSAGE );
        }  // fim do m?todo actionPerformed
        // m?todo que chama o conversor
        public String chamaConversor(String arquivoPdf){
            String arquivoTxt = new String(arquivoPdf);
            arquivoTxt = arquivoPdf.replace(".pdf", ".txt");
            try {
                conversor.pdfToText(arquivoPdf,arquivoTxt);
            catch (Exception ex) {
                ex.printStackTrace();
            return (arquivoTxt);
        // executa a aplica??o
        public static void main( String args[] )
           ConstrutorDeTemplate2 application = new ConstrutorDeTemplate2();
           application.setDefaultCloseOperation (
              JFrame.EXIT_ON_CLOSE );
        } // fim do m?todo main
    }  // fim da classe ExtratorDeSubstantivos2
      * PdfToText.java
      * Created on 11 de Agosto de 2007, 10:57
      * To change this template, choose Tools | Template Manager
      * and open the template in the editor.
    //package br.unifacs.dis2007.template2;
      * @author www
    package br.unifacs.dis2007.template2;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.net.MalformedURLException;
    import java.net.URL ;
    import org.pdfbox.pdmodel.PDDocument;
    import org.pdfbox.pdmodel.encryption.AccessPermission;
    import org.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
    import org.pdfbox.util.PDFText2HTML;
    import org.pdfbox.pdmodel.font.PDFont.* ;
    import org.pdfbox.util.PDFTextStripper;
    import org.pdfbox.util.*;
    import org.pdfbox.pdmodel.*;
    public class PdfToText
        public void pdfToText( String pdfFile, String textFile) throws Exception
                Writer output = null;
                PDDocument document = null;
                try
                    try
                        //basically try to load it from a url first and if the URL
                        //is not recognized then try to load it from the file system.
                        URL url = new URL( pdfFile );
                        document = PDDocument.load( url );
                        String fileName = url.getFile();
                        if( textFile == null && fileName.length () >4 )
                            File outputFile =
                                new File( fileName.substring( 0,fileName.length() -4 ) + ".txt" );
                            textFile = outputFile.getName();
                    catch( MalformedURLException e )
                        document = PDDocument.load( pdfFile );
                        if( textFile == null && pdfFile.length() >4 )
                            textFile = pdfFile.substring( 0,pdfFile.length() -4 ) + ".txt";
                       //use default encoding
                      output = new OutputStreamWriter( new FileOutputStream( textFile ) );
                    PDFTextStripper stripper = null;
                    stripper = new PDFTextStripper();
                    stripper.writeText( document, output );
                finally
                    if( output != null )
                        output.close();
                    if( document != null )
                        document.close();
                }//finally
            }//end funcao
     

    You might have to modify you weblogic.policy to grant access rights for
    WLAS.
    Cheers - Wei
    Nyman <[email protected]> wrote in message
    news:[email protected]..
    Hi everyone,
    When running WLS in RedHat 6.2 with the command - ./startWebLogic.sh,an
    error saying "Exception in thread mainjava.security.AccessControlException
    : access denied (java.lang.RuntimePermission createSecurityManager) is
    displayed.
    Could anyone suggestion an solution?
    Best Regardsm

  • HELP Needed with this error:   Exception in thread "main" java.lang.NoClass

    Folks,
    I am having a problem connecting to my MSDE SQL 2000 DB on a WindowsXP pro. environment. I am learning Java and writing a small test prgm to connect the the database. The code compiles ok, but when I try to execute it i keep getting this error:
    "Exception in thread "main" java.lang.NoClassDefFoundError: Test1"
    I am using the Microsoft jdbc driver and my CLASSPATH is setup correctly, I've also noticed that several people have complained about this error, but have not seen any solutions....can someone help ?
    Here is the one of the test programs that I am using:
    import java.sql.*;
    * Microsoft SQL Server JDBC test program
    public class Test1 {
    public Test1() throws Exception {
    // Get connection
    DriverManager.registerDriver(new
    com.microsoft.jdbc.sqlserver.SQLServerDriver());
    Connection connection = DriverManager.getConnection(
    "jdbc:microsoft:sqlserver://LAPTOP01:1433","sa","sqladmin");
    if (connection != null) {
    System.out.println();
    System.out.println("Successfully connected");
    System.out.println();
    // Meta data
    DatabaseMetaData meta = connection.getMetaData();
    System.out.println("\nDriver Information");
    System.out.println("Driver Name: "
    + meta.getDriverName());
    System.out.println("Driver Version: "
    + meta.getDriverVersion());
    System.out.println("\nDatabase Information ");
    System.out.println("Database Name: "
    + meta.getDatabaseProductName());
    System.out.println("Database Version: "+
    meta.getDatabaseProductVersion());
    } // Test
    public static void main (String args[]) throws Exception {
    Test1 test = new Test1();

    I want to say that there was nothing wrong
    with my classpath config., I am still not sure why
    that didn't work, there is what I did to resolved
    this issue.You can say that all you like but if you are getting NoClassDefFound errors, that's because the class associated with the error is not in your classpath.
    (For future reference: you will find it easier to solve problems if you assume that the problem is your fault, instead of trying to blame something else. It almost always is your fault -- at least that's been my experience.)
    1. I had to set my DB connection protocol to TCP/IP
    (this was not the default), this was done by running
    the
    file "svrnetcn.exe" and then in the SQL Server Network
    Utility window, enable TCP/IP and set the port to
    1433.Irrelevant to the classpath problem.
    2. I then copied all three of the Microsoft JDBC
    driver files to the ..\jre\lib\ext dir of my jdk
    installed dir.The classpath always includes all jar files in this directory. That's why doing that fixed your problem. My bet is that you didn't have the jar file containing the driver in your classpath before, you just had the directory containing that jar file.
    3. Updated my OS path to located these files
    and....BINGO! (that simple)Unnecessary for solving classpath problems.
    4. Took a crash course on JDBC & basic Java and now I
    have created my database, all tables, scripts,
    stored procedures and can read/write and do all kinds
    of neat stuff.All's well that ends well. After a few months you'll wonder what all the fuss was about.

  • Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.dr

    Hi
    I am trying to use type 4 driver to connect to my Oracle 9i Rel2 database. I downloaded the odbc14.jar from oracle and added in the C:\Oracle9i\jdbc\lib path. As on the website, I setup my environment:
    Setting Up Your Environment
    On Win95/Win98/NT:
    - Add [ORACLE_HOME]\jdbc\lib\classes111.zip and
    [ORACLE_HOME]\jdbc\lib\nls_charset11.zip to your CLASSPATH.
    (Add classes12.zip and nls_charset12.zip if JDK 1.2.x or 1.3 is
    used. Add ojdbc14.jar and nls_charset12.zip if JDK 1.4 is used.)
    - Make sure [ORACLE_HOME]\bin is in your PATH.
    Still I am getting the following error during runtime:
    Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at jdbc.InsertQueryEx.main(InsertQueryEx.java:11)
    Below is the source code:
    import java.sql.*;
    import java.io.*;
    public class InsertQueryEx {
    public static void main(String[] args)throws Exception{
    Class.forName("oracle.jdbc.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@Prashy:1521:orcl", "scott", "tiger");
    DataInputStream din = new DataInputStream(System.in);
    Statement stmt = con.createStatement();
    while(true){
    try{
    System.out.println("enter emp name");
    String name = din.readLine();
    System.out.println("enter emp no");
    int no = Integer.parseInt(din.readLine());
    System.out.println("enter emp salary");
    float sal = Float.parseFloat(din.readLine());
    System.out.println("enter emp address");
    String addr = din.readLine();
    int count = stmt.executeUpdate("insert into myemp values("+no+",'"+name+"',"+sal+",'"+addr+"')");
    if(count>0)
    System.out.println("Record added");
    else
    System.out.println("Failed");
    catch (Exception e){
    System.err.println("Exception: "+e.getMessage());
    Any help is appreciated
    Thanks
    Prashant

    I am sorry but I did add those in the classpath but still getting this error:
    This is what I have for user variable in classpath:
    .;C:\Oracle9i\jdbc\lib\ojdbc14.jar;C:\Oracle9i\jdbc\lib\nls_charset12.jar
    error is:
    java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         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)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at jdbc.InsertQueryEx.main(InsertQueryEx.java:14)
    Thanks

Maybe you are looking for

  • Design problem: RS232 communication

    Hi, I have a design problem for communication with a device via RS232. Since I'm normally a C++ programmer I might just look at the problem from a wrong angle and hope for some hints how to do it in LabVIEW. The scenario: A device is communicating wi

  • Export and Import of Layout Set / Readonly Error

    Hi, I tried to export a layout set. I choosed "Export" from the action context menu. I've choosen "include related content.." Download the file to .configarchive In the target system, I've choosen "Import" from the action context menu. But then, I'll

  • Function e: vs. event

    I'm a actionscript / flash noob and had a question about flash. I've seen different functions written different ways but one thing I don't understand is the "e" for example. function name(e:MouseEvent):void { and function navOutF(event:MouseEvent):vo

  • Commission Agent in Sales Order

    D/ Friends, 1. Pl advice how to configure Commission Agent (Forwarding Agent) in the Sales Order. 2. Weu2019ve to give commission to the Agent, so which condition type shd be used for that purpose & how Commission Agent will get credited with the com

  • Why is Adobe making easy things so complicated??

    Seems I'm paying extra for more complication!