将带有第三方JAR包的JAVA项目导成JAR文件!! 各位大侠,现在我有一JAVA项目,里面有第三方JAR包!!现在想把这个项目导出成JAR文件,做了很久还是没能实现!!跪求详细操作步骤!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同求,我要把jdbc驱动的jar打包进去 manifest 规范里有一条 Class-Path: ... manifest里的可以把三方包打进去吗? 可以使用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> 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 1024SOCKET 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 classesDialogBox(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.0int 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.0if (LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=0) {WSACleanup();return; }//创建socketsock = socket(AF_INET, //internetwork: UDP, TCP, etcSOCK_STREAM, //SOCK_DGRAM说明是UDP类型0 ); //protocolif (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); 静态方法/变量 readobject 报错 如何实现动态添加子菜单项? 新手问题:javabean 用法问题? 关于JList的问题 图片问题!高手请进! 网页发送请求给后台处理程序,二者进行消息传输,之间采用什么接口比较好呀?高分,谢谢。 如何将java程序在 windows2000 Server 上在后台进行运行! 征求方法:java有哪些方法与C程序进行通讯? java中如何处理有两个以上返回值的问题? 看到一道很老的题,但是发现了有意思的答案 如何更改Maven的jar包存储的位置
Class-Path: ...
使用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>
服务器端
#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);