2012-08-07 55 views
0

我想運行一個在eclipse中設置的tcp服務器,但當我嘗試運行它時,在控制檯中出現以下問題。如果我需要添加任何其他Java文件,而不是我包含的那些文件,請告訴我。意外的頂級例外:非法參數例外

[2012-08-07 09:13:16 - com.Proto1] Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Leneter/messaging/dataprocessing/messagequeueing/MessageQueue$1; 
    at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
    at com.android.dx.dex.file.DexFile.add(DexFile.java:163) 
    at com.android.dx.command.dexer.Main.processClass(Main.java:486) 
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455) 
    at com.android.dx.command.dexer.Main.access$400(Main.java:67) 
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394) 
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) 
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) 
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) 
    at com.android.dx.command.dexer.Main.processOne(Main.java:418) 
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329) 
    at com.android.dx.command.dexer.Main.run(Main.java:206) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:180) 
    at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:703) 
    at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:577) 
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) 
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) 
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321) 
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396) 
    at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) 
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) 
    at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) 
    at org.eclipse.core.internal.resources.Project.build(Project.java:124) 
    at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1000) 
    at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147) 
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855) 
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704) 
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047) 
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 
[2012-08-07 09:13:16 - com.Proto1] Dx 1 error; aborting 
[2012-08-07 09:13:16 - com.Proto1] Conversion to Dalvik format failed with error 1 

的Java

import eneter.messaging.diagnostic.EneterTrace; 
import eneter.messaging.endpoints.typedmessages.*; 
import eneter.messaging.messagingsystems.messagingsystembase.*; 
import eneter.messaging.messagingsystems.tcpmessagingsystem.TcpMessagingSystemFactory; 
import eneter.net.system.EventHandler; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.*; 

public class AndroidNetCommunicationClientActivity extends Activity { 
    // Request message type 
    // The message must have the same name as declared in the service. 
    // Also, if the message is the inner class, then it must be static. 
    public static class MyRequest { 
     public String Text; 
    } 

    // Response message type 
    // The message must have the same name as declared in the service. 
    // Also, if the message is the inner class, then it must be static. 
    public static class MyResponse { 
     public int Length; 
    } 

    // UI controls 
    private Handler myRefresh = new Handler(); 
    private EditText myMessageTextEditText; 
    private EditText myResponseEditText; 
    private Button mySendRequestBtn; 

    // Sender sending MyRequest and as a response receiving MyResponse. 
    private IDuplexTypedMessageSender<MyResponse, MyRequest> mySender; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tcp_server); 

     // Get UI widgets. 
     myMessageTextEditText = (EditText) findViewById(R.id.messageTextEditText); 
     myResponseEditText = (EditText) findViewById(R.id.messageLengthEditText); 
     mySendRequestBtn = (Button) findViewById(R.id.sendRequestBtn); 

     // Subscribe to handle the button click. 
     mySendRequestBtn.setOnClickListener(myOnSendRequestClickHandler); 

     try { 
      openConnection(); 
     } catch (Exception err) { 
      EneterTrace.error("Open connection failed.", err); 
     } 
    } 

    @Override 
    public void onDestroy() { 
     // Stop listening to response messages. 
     mySender.detachDuplexOutputChannel(); 
    } 

    private void openConnection() throws Exception { 
     // Create sender sending MyRequest and as a response receiving 
     // MyResponse 
     IDuplexTypedMessagesFactory aSenderFactory = new DuplexTypedMessagesFactory(); 
     mySender = aSenderFactory.createDuplexTypedMessageSender(
       MyResponse.class, MyRequest.class); 

     // Subscribe to receive response messages. 
     mySender.responseReceived().subscribe(myOnResponseHandler); 

     // Create TCP messaging for the communication. 
     // Note: 10.0.2.2 is a special alias to the loopback (127.0.0.1) 
     // on the development machine 
     IMessagingSystemFactory aMessaging = new TcpMessagingSystemFactory(); 
     IDuplexOutputChannel anOutputChannel = aMessaging 
       .createDuplexOutputChannel("tcp://10.0.2.2:8060/"); 

     // Attach the output channel to the sender and be able to send 
     // messages and receive responses. 
     mySender.attachDuplexOutputChannel(anOutputChannel); 
    } 

    private void onSendRequest(View v) { 
     // Create the request message. 
     MyRequest aRequestMsg = new MyRequest(); 
     aRequestMsg.Text = myMessageTextEditText.getText().toString(); 

     // Send the request message. 
     try { 
      mySender.sendRequestMessage(aRequestMsg); 
     } catch (Exception err) { 
      EneterTrace.error("Sending the message failed.", err); 
     } 
    } 

    private void onResponseReceived(Object sender, 
      final TypedResponseReceivedEventArgs<MyResponse> e) { 
     // Display the result - returned number of characters. 
     // Note: Marshal displaying to the correct UI thread. 
     myRefresh.post(new Runnable() { 
      public void run() { 
       myResponseEditText.setText(Integer.toString(e 
         .getResponseMessage().Length)); 
      } 
     }); 
    } 

    private EventHandler<TypedResponseReceivedEventArgs<MyResponse>> myOnResponseHandler 

    = new EventHandler<TypedResponseReceivedEventArgs<MyResponse>>() { 
     public void onEvent(Object sender, 
       TypedResponseReceivedEventArgs<MyResponse> e) { 
      onResponseReceived(sender, e); 
     } 
    }; 

    private OnClickListener myOnSendRequestClickHandler = new OnClickListener() { 
     public void onClick(View v) { 
      onSendRequest(v); 
     } 
    }; 
} 

回答

0

我從我的構建路徑刪除無效的jar文件,我的問題得到解決。

相關問題