2017-01-13 3 views
2

ОБНОВЛЕНИЕ Я был неправ все время. Я блокировал вывод методом, который использовал и не добавлял сюда. Теперь он работает хорошо, и я могу писать из другого процесса.Как печатать строки из другого класса

Я хотел бы знать, есть ли способ печати строки в виде консоли извне. У меня есть класс (класс1), который имеет метод onMessage.

public class Class1 implements MessageListener { 
    ... 
    public void onMessage(Message msg) { 
     System.out.println(msg.getText()); 
    } 
    ... 
} 

А потом у меня есть класс с основным, который создает экземпляр этого класса и в то время как делать вещи OnMessage из class1 пожаров.

public class Class2{  
    public static void main(String args[]) { 
     Class1 obj = new Class1(); 
     ... 
     while(!":q".equals((action = scanner.next()))){ 
      obj.anotherAction(action); 
     } 
     ... 
    } 
} 

Когда я пытаюсь, объект кажется заблокированным. Я думаю, что я ошибаюсь в решении. Возможно, вызывается println из внешних блоков, поскольку ему нечего печатать.

Я хотел бы понять, что происходит и как я могу это решить. Моя проблема заключается в использовании вывода, который создает Class2 main из Class1.

Надеюсь, я хорошо объяснил, что я не носитель языка.

EDIT Теперь я добавил больше кодов. Теперь я понимаю, что ожидание стандартного ввода может помешать печати другого класса. Должен ли я запускать внешний процесс для вывода? Как я могу сделать это на одном и том же консольном представлении?

+0

Вы должны взглянуть на 'Looging'. – user2004685

+0

so: obj.onMessage (новое сообщение()); не работает ? Я не знаю «Сообщение», поэтому я не знаю, как это работает. – azro

+0

- проблема, возникающая при попытке создать объект Class1() в основном? –

ответ

0

попробовать этот Class1.java

import java.util.Scanner; 
import javax.jms.JMSException; 
import javax.jms.Message; 
import javax.jms.TextMessage; 


public class Class1 { 
     public static void main(String args[]) throws JMSException { 
     Class2 obj = new Class2(); 
Scanner s=new Scanner(System.in); 
    Message m; 
TextMessage textMessage = null; 

      System.out.println("Enter a message"); 

     textMessage.setText(s.next()); 

     m=(Message)textMessage; 
obj.onMessage(m); 

    } 
} 

Class2.java

import javax.jms.*; 

public class Class2 implements MessageListener{ 

public void onMessage(Message msg) { 
     System.out.println(msg.toString()); 

     TextMessage textMessage = (TextMessage) msg; 
     try { 

      System.out.println(textMessage.getText()); 

     } catch (JMSException e) { 

      e.printStackTrace(); 

     } 

    } 
} 
+0

Метод onMessage запускается, когда другой класс действительно отправляет сообщение. Я собираюсь загрузить свой код, так как я не объяснил хорошо в первый раз – Davidaz

+0

ok, ожидая вашего редактирования/кода. а также для получения дополнительной информации о JMS см. этот оракул java ee 6 tutorial http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html – ArgaPK

+0

Я думаю, что моя проблема связана с управлением In/Out, чем с JMS (остальная часть приложения работает достаточно хорошо). Я обновил свой пост. Спасибо! – Davidaz

Смежные вопросы