2014-11-07 7 views
0

저는 Java를 처음 사용하여 약간의 도움이 필요합니다. MQ 대기열에서 메시지를 읽은 다음 메시지를 txt 파일로 출력하고 마지막으로 대기열에서 원래 메시지를 삭제하려고합니다. 나는 다음을 생각해 냈지만 컴파일되지는 않는다. 도움이 될 것입니다. 감사합니다.Java를 사용하여 MQ에서 메시지를 읽는 방법

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

일부 구문 오류가 있습니다. 수동으로 자바 소스를 컴파일하고 컴파일러 오류를 해석하는 데 어려움을 겪지 않는 한,이 모든 작업을 수행하는 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를 사용하십시오이다. IDE를 사용하면 다른 많은 방법으로 도움이 될 것입니다.

코드가 괜찮습니다. 큐에서 메시지를 삭제할 필요가 없습니다. 메시지가 큐에서 읽 t지면 자동으로 h 제되어야합니다.