2014-11-07 2 views
0

Я очень новичок в Java и нуждаюсь в некоторой помощи. Я ищу, чтобы прочитать сообщение из очереди MQ, затем вывести сообщение в txt-файл и, наконец, удалить исходное сообщение из очереди. Я придумал следующее, но оно не будет компилироваться. Любая помощь будет принята с благодарностью! Спасибо!Как читать сообщение от MQ с помощью Java

public class test 
{ 
public static void main(String[] args); 
{ 
MQQueueManager QMgr=new MQQueueManager(qManager);     
int openOptions=MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE; 
MQQueue queue=QMgr.accessQueue(queueName, openOptions);   
MQMessage theMessage=new MQMessage(); 
MQGetMessageOptions gmo=new MQGetMessageOptions(); 

gmo.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST; 
gmo.matchOptions=MQC.MQMO_NONE; 
gmo.waitInterval=5000; 

boolean thereAreMessages=true; 

while(thereAreMessages){    **(Gives an "Illegal start of type" error)** 
try{ 
    queue.get(theMessage,gmo); 
    String msgText = theMessage.readString(theMessage.getMessageLength()); 
PrintStream out = new PrintStream(new   FileOutputStream("C:\\Users\\js04279\\Desktop\\test.txt")): 
System.setOut(out); 

System.out.println("REMOVING............................."); 
getMessageOptions.options =MQC.MQGMO_MSG_UNDER_CURSOR; 
} 

catch(MQException e){ 
    if(e.reasonCode == e.MQRC_NO_MSG_AVAILABLE) 
     System.out.println("No more message available or retrieved"); 
     thereAreMessages=false; 
    } 

catch (IOException e){ 
    System.out.println("ERROR: "+e.getMessage()); 
    } 
} 

I got the following error messages: 
"test.java:17: illegal start of type"  - this was at the while statement 
"test.java:35: <identifier> expected" 
+0

У вас появляется сообщение об ошибке? – Robert

+0

Да, я получаю сообщение об ошибке: «test.java:17: незаконный запуск типа» для оператора While и другая ошибка «test.java:35: expected» – smythie89

+0

Имеются некоторые синтаксические ошибки. Если вам не нравится вручную компилировать исходный код java и увязнуть в интерпретации ошибок компилятора, я предлагаю вам использовать IDE, которая делает все это и многое другое для вас. [Eclipse чрезвычайно популярна, очень расширяема и бесплатна.] (Https://www.eclipse.org/home/index.php) – mmcrae

ответ

0

Если это все, что у вас есть в классе, то, думаю, вам не хватает 2 закрывающей скобки. 1 для основного метода и 1 для класса.

Я вижу, что ваша последняя закрывающая скобка предназначена для цикла while.

Java рассмотрит это как замыкающую фигуру для класса и будет интерпретировать так, как если бы вы записывали заявления на уровне класса. Это недопустимо и поэтому рассматривается как незаконный старт типа.

0

Удалить точку с запятой после Public static void main (String args []);

Правильное утверждение

public static void main(String[] args) { 
    //TODO your code 
} 
0

Пожалуйста, используйте IDE как Eclipse, или Net Beans, чтобы избежать ошибок компиляции времени. Использование IDE поможет вам многими другими способами.

Ваш код кажется прекрасным для меня. Нет необходимости удалять сообщение из очереди. Он должен быть автоматически удален после чтения сообщения из очереди.

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