各位大侠,现在我有一JAVA项目,里面有第三方JAR包!!现在想把这个项目导出成JAR文件,做了很久还是没能实现!!跪求详细操作步骤!!!!

解决方案 »

  1.   

    同求,我要把jdbc驱动的jar打包进去
      

  2.   

    manifest 规范里有一条 
    Class-Path: ...
      

  3.   

    manifest里的可以把三方包打进去吗?
      

  4.   

    可以使用ant或Maven
    使用ant:   <target name="jar" depends="build">
           <mkdir dir="${jardir}"/>
           
           <jar   destfile="*** .jar" basedir="***">
          
           <manifest >
             <attribute name="Main-Class" value="***"/>
           </manifest>
           <zipfileset src="***.jar" excludes="META-INF/*"/>
           <zipfileset src="***.jar" excludes="META-INF/*"/>      
           <zipfileset src="***" excludes="META-INF/*"/>
         
           </jar>
        </target>使用Maven更简单些,比如使用maven-assembly-plugin,只许要配置:
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
    <manifest>
    <mainClass>com.duketechnology.platform.view.main.Duker</mainClass>
    </manifest>
    </archive>
    </configuration>
    <executions>
    <execution>
    <id>make-assembly</id>
    <!-- this is used for inheritance merges -->
    <phase>package</phase>
    <!-- append to the packaging phase. -->
    <goals>
    <goal>single</goal>
    <!-- goals == mojos -->
    </goals>
    </execution>
    </executions>
    </plugin>
      

  5.   

    code=C/C++][/code]
    服务器端
    #include "StdAfx.h"
    #include "winsock2.h"
    #include "commctrl.h"
    #include "resource.h"
    //#include <windows.h>;
    #pragma comment(lib,"ws2_32.lib")   bool Flag = false;
    #define BuffSize 1024
    SOCKET sock;
    //SOCKET AcceptSocket;
    HINSTANCE g_hInst;
    //void CreateSocket1(HWND hDlg, HWND hWnd);
    void CreateSocket1(HWND hDlg, HWND hWnd,RECT rt);
    //void SendMessage1();
    LRESULT CALLBACK Proc(HWND, UINT, WPARAM, LPARAM);BOOL APIENTRY WinMain(HINSTANCE hInstance,
      HINSTANCE hPrevInstance,
      LPSTR lpCmdLine,
      int nCmdShow)
    {
    g_hInst = hInstance;
    InitCommonControls(); //Registers and initializes the common control window classes
    DialogBox(g_hInst, (LPCTSTR)IDD_TALK, NULL, (DLGPROC)Proc);//该宏根据对话框模板资源创建一个模态的对话框
    return 0;
    }
    LRESULT CALLBACK Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    RECT rt; //矩形结构
    // TCHAR buf[64]={0};
      HWND hWnd;hWnd=GetDlgItem(hDlg, IDC_TALKLIST1);//hDlg:标识含有控制的对话框;IDC_LIST1:指定将被检索的控制标识符。
    GetClientRect(hWnd, &rt);
    switch(message)
    {
    case WM_INITDIALOG: //初始化
    return true;
    case WM_COMMAND: //菜单id  
    switch(LOWORD(wParam))
    {
    case IDC_CreateSocket:  
    CreateSocket1(hDlg,hWnd,rt); //建立socket
    // RecvProc(hDlg, hWnd, rt);
    break;
    case IDC_SendMessage:
    // RecvProc(hDlg, hWnd, rt);
    // SendMessage1();//发送消息
    // case IDC_CloseSocket:
    // Flag = false;
    // closesocket(AcceptSocket);
    // closesocket(sock); //关闭socket
    // break;
    case IDCANCEL:
    WSACleanup();
    EndDialog(hDlg, LOWORD(wParam));  
    return TRUE;
    }
    }
    return 0;
    }void CreateSocket1(HWND hDlg, HWND hWnd,RECT rt)  
    {
      //socket套接字
      //启动SOCKET库,版本为2.0
    int rv,err,iError;
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested=MAKEWORD(2, 0);
      //hWnd1=GetDlgItem(hDlg, IDC_TALKLIST1);
    err = WSAStartup(wVersionRequested, &wsaData );
    if ( 0 != err ) //检查Socket初始化是否成功
    {
    //DrawText(hWnd,IDC_TALKLIST1,TEXT("SOCKET初始化失败"));  
    MessageBox(hDlg,NULL,"SOCKET初始化失败",MB_OK);
    return;
    }
    else
    {
      MessageBox(hDlg,NULL,"SOCKET初始化成功",MB_OK);
    }
    //检查Socket库的版本是否为2.0
    if (LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=0)  
    {
    WSACleanup();
    return;  
    }
    //创建socket
    sock = socket(
    AF_INET, //internetwork: UDP, TCP, etc
    SOCK_STREAM, //SOCK_DGRAM说明是UDP类型
    0 ); //protocol
    if (INVALID_SOCKET==sock)  
    {
    LPVOID lpMsgBuf;
    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |   
      FORMAT_MESSAGE_FROM_SYSTEM |   
      FORMAT_MESSAGE_IGNORE_INSERTS,   
      NULL,   
      WSAGetLastError(),   
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),   
      (LPTSTR) &lpMsgBuf,   
      0,   
      NULL
    );
    MessageBox(hDlg, (LPCTSTR)lpMsgBuf, "Error ", MB_OK | MB_ICONINFORMATION);   
    LocalFree(lpMsgBuf);   
    //SetDlgItemText(hWnd,IDC_TALKLIST1,TEXT("Socket 创建失败,Exit!"));
    MessageBox(hDlg,NULL,"Socket 创建失败,Exit!",MB_OK);
    return;
    }
    //绑定
    sockaddr_in sa;   
    // char IPAddress[32]; //本地地址
    // GetDlgItem(hDlg, IDC_LocalADDR);
    // GetWindowText(hWnd1,IPAddress,sizeof(IPAddress));
    sa.sin_family=AF_INET;  
    sa.sin_port=htons(3068);  
    sa.sin_addr.S_un.S_addr =htonl(INADDR_ANY); //Server address can be INADDR_ANY;  
    rv=bind(sock, (SOCKADDR *)&sa, sizeof(sa));  
    if (INVALID_SOCKET==rv)  
    {  
    // iError=WSAGetLastError();
    LPVOID lpMsgBuf;
    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |   
      FORMAT_MESSAGE_FROM_SYSTEM |   
      FORMAT_MESSAGE_IGNORE_INSERTS,   
      NULL,   
      WSAGetLastError(),   
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),   
      (LPTSTR) &lpMsgBuf,   
      0,   
      NULL
    );
    MessageBox(hDlg, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION);   
    LocalFree(lpMsgBuf);   
    MessageBox(hDlg,NULL,"绑定失败",MB_OK);}  
      
    //监听
      rv=listen(sock, 2);
      
    if( SOCKET_ERROR == rv)  
    {  
      
    iError=WSAGetLastError();
    MessageBox(hDlg, NULL, "没有消息", MB_OK);
    }
    else
    {
      MessageBox(hDlg, NULL, "监听正常", MB_OK);
    Flag=true;
    }
    //}
      
    //void RecvProc(HWND hDlg, HWND hWnd, RECT rt)
    //{
    SOCKET AcceptSocket;
    int SendLen;
    int RecvLen;
    // int iError; //接受字节数
    char RecvBuff[BuffSize+1]; //接受缓冲区
    HDC hdc;// 存放接入的client的地址信息  sockaddr_in addrClient;   
      int len = sizeof(struct sockaddr_in);  
      AcceptSocket=accept(sock,(struct sockaddr*)&addrClient, &len);
    if(INVALID_SOCKET == AcceptSocket)
    {
    LPVOID lpMsgBuf;
    FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |   
      FORMAT_MESSAGE_FROM_SYSTEM |   
      FORMAT_MESSAGE_IGNORE_INSERTS,   
      NULL,   
      WSAGetLastError(),   
      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),   
      (LPTSTR) &lpMsgBuf,   
      0,   
      NULL
    );
    MessageBox(hDlg, (LPCTSTR)lpMsgBuf, "Error ", MB_OK | MB_ICONINFORMATION);   
    LocalFree(lpMsgBuf);   
    iError = WSAGetLastError();
    MessageBox(hDlg,NULL,"接收失败",MB_OK);
    }
    /* SendLen=GetDlgItemText(hDlg, IDC_EDIT1, RecvBuff, sizeof(RecvBuff));
    hdc = GetDC(hWnd);
    DrawText(hdc, RecvBuff, SendLen, &rt, DT_WORDBREAK | DT_EDITCONTROL);
    ReleaseDC (hWnd, hdc);
    rv = send(AcceptSocket, RecvBuff, SendLen, 0);  
    if(SOCKET_ERROR == rv)
    {
    iError = WSAGetLastError();
    MessageBox(hDlg, NULL,"发送失败",MB_OK);
    }
    */
    RecvLen = recv(AcceptSocket, RecvBuff, BuffSize, 0);  
    RecvBuff[RecvLen]='\0';
    if (RecvLen>0)
    {
    MessageBox(hDlg, NULL,"执行接收功能",MB_OK);
    hdc = GetDC (hWnd);
    DrawText(hdc, RecvBuff, lstrlen(RecvBuff), &rt, DT_WORDBREAK | DT_EDITCONTROL);
      ReleaseDC (hWnd, hdc); 
    }
    else
    {
    // Flag=false;
    MessageBox(hDlg,NULL,"没有收到数据", MB_OK);
    }
      SendLen=GetDlgItemText(hDlg, IDC_EDIT1, RecvBuff, sizeof(RecvBuff));
    hdc = GetDC(hWnd);
    DrawText(hdc, RecvBuff, SendLen, &rt, DT_WORDBREAK | DT_EDITCONTROL);
    ReleaseDC (hWnd, hdc);
    rv = send(AcceptSocket, RecvBuff, SendLen, 0);  
    if(SOCKET_ERROR == rv)
    {
    iError = WSAGetLastError();
    MessageBox(hDlg, NULL,"发送失败",MB_OK);
    }
    closesocket(AcceptSocket);
    closesocket(sock);