Java-swt-windowbilder-swtDesigner项目使用eclipse打包成可自运行JAR包-单个文件-内含依赖jar包-支持maven依赖-的两个解决方案
问题:
当在ec中创建基于windowbuilder的swt项目。是指定办法的,先创建swt项目,再创建swt-class,不能用创建maven项目的办法
程序设置好后,加入pom.xml。改成maven项目(因为需要依赖jackson库--当然直接下载三个包放进libs也行,但想跟潮流) 。然后用maven update/clean , install / build。做出来的jar包是不能运行的。查.mf发现没有写入主类。
以下是解决这问题的办法:
一,用myeclipse2017-export生成可运行jar
ME2017基于eclipse4.6.1
把生成的windowbuilder-swt项目改成maven项目
1,新建pom.xml,与src文件夹并列,填入本项目信息(填组织,作品名,版本就行)。项目文件夹还得手动调整下
scr-main-java-com-groupname-ProjectName; 源代码里的package要跟着改
scr-resourceFolder
2,项目右击,configure,改成maven项目
3,Maven-update and clean
4,ME2017 Export..runnable jar---libary handling改中间的package required...
如果项目不能运行,winrar打开MANIFEST.MF 改成 / 加入
Rsrc-Main-Class: main.java.com.bluecn.gradle_swt_test.gradletest
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
此处改成你的主类路径及主类名称,注意要有空格,及用“点”表示路径
Main-Class不要改
另,为什么这里是 gradletest。因为开始想试改gradle项目,结果刷新慢的要命。可能要去改中央仓库地址,但还没改。倒是maven的setting.xml改好了。
--------------------------------------
二,用spring-boot-maven-plugin帮助打包
1改成MAVEN项目
2到me的plugins文件夹找齐项目本地依赖里列出的jar包,复制到swt_libs包,把swt_libs包放到src里面,buildpath改用这些包,要注意有没项目加减-版本更新.如果有变更,要跟着改下方的dependency内容。
3把下面两部分内容嵌套到项目的pom里去
4 Maven-update and clean
5 Run as - maven install
6 如果出错可以看console里的信息
生成JAR包在项目的target文件夹
<!--写入依赖中,具体内容参考你的SWT项目里面的本地依赖。这是me2017的--> <dependency> <groupId>com.1</groupId> <artifactId>com.ibm.icu_56.1.0</artifactId> <version>v201601250100</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/com.ibm.icu_56.1.0.v201601250100.jar</systemPath> </dependency> <dependency> <groupId>com.2</groupId> <artifactId>org.eclipse.core.commands_3.8.0</artifactId> <version>v20160316-1921</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.core.commands_3.8.0.v20160316-1921.jar</systemPath> </dependency> <dependency> <groupId>com.3</groupId> <artifactId>org.eclipse.core.runtime_3.12.0</artifactId> <version>v20160606-1342</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.core.runtime_3.12.0.v20160606-1342.jar</systemPath> </dependency> <dependency> <groupId>com.4</groupId> <artifactId>org.eclipse.equinox.common_3.8.0</artifactId> <version>v20160509-1230</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.equinox.common_3.8.0.v20160509-1230.jar</systemPath> </dependency> <dependency> <groupId>com.5</groupId> <artifactId>org.eclipse.equinox.registry_3.6.100</artifactId> <version>v20160223-2218</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.equinox.registry_3.6.100.v20160223-2218.jar</systemPath> </dependency> <dependency> <groupId>com.6</groupId> <artifactId>org.eclipse.jface.text_3.11.1</artifactId> <version>v20160819-1517</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.jface.text_3.11.1.v20160819-1517.jar</systemPath> </dependency> <dependency> <groupId>com.7</groupId> <artifactId>org.eclipse.jface_3.12.0</artifactId> <version>v20160518-1929</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.jface_3.12.0.v20160518-1929.jar</systemPath> </dependency> <dependency> <groupId>com.8</groupId> <artifactId>org.eclipse.osgi_3.11.1</artifactId> <version>v20160708-1632</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.osgi_3.11.1.v20160708-1632.jar</systemPath> </dependency> <dependency> <groupId>com.9</groupId> <artifactId>org.eclipse.swt.win32.win32.x86_3.105.1</artifactId> <version>v20160907-0248</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.swt.win32.win32.x86_3.105.1.v20160907-0248.jar</systemPath> </dependency> <dependency> <groupId>com.10</groupId> <artifactId>org.eclipse.text_3.6.0</artifactId> <version>v20160503-1849</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.text_3.6.0.v20160503-1849.jar</systemPath> </dependency> <dependency> <groupId>com.13</groupId> <artifactId>org.eclipse.ui.forms_3.7.0</artifactId> <version>v20160518-1929</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.ui.forms_3.7.0.v20160518-1929.jar</systemPath> </dependency> <dependency> <groupId>org.eclipse.ui.workbench_3.108.1</groupId> <artifactId>out-jar-12</artifactId> <version>v20160819-2118</version> <scope>system</scope> <systemPath>${project.basedir}/src/swt_libs/org.eclipse.ui.workbench_3.108.1.v20160819-2118.jar</systemPath> </dependency>
<!--在pom.xml下方加入build设置--> <!--用这段就可以解决--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.4.2</version> <configuration> <layout>ZIP</layout> <includeSystemScope>true</includeSystemScope> <!--此处写上你的主类对象及路径--> <startClass>main.java.com.bluecn.gradle_swt_test.gradletest</startClass> </configuration> <!--加上这段,才能生成可自运行JAR包--> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
折腾了两天才解决的问题。倒是对maven, 打包,打fatjar包,多了些认识。

浙公网安备 33010602011771号