在 springboot 项目中,除了启动类的主函数 mainclass,如果还出现其他的 main 方法,本地运行是没有任何问题,但是在打包 package 时,就会报错,说 repackage 时 这时候,我们就需要在 maven 的 pom.xml 文件中指定打包时的 mainClass,具体是在 spring-boot-maven-plugin 中指定,配置如下: <build> artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass >com.xxx.xxApplication</mainClass> </configuration> <executions>
artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass >com.xxx.XxxApplication</mainClass> </configuration> <executions>
Math 类方法 xxxValue用于将number对象转换为xxx数据类型的值并返回package com.leo.demo; /** * @author Java */public class MainClass ; }}compareTo() 方法用于将 Number 对象与方法的参数进行比较package com.leo.demo; /** * @author java */public class MainClass 8)); }}valueOf() 方法用于返回给定参数的原生 Number 对象值package com.leo.demo; /** * @author java */public class MainClass (x.toString()); }}parseInt()将字符串解析为int类型package com.leo.demo; /** * @author java */public class MainClass (Integer.parseInt("6")); }}abs() 返回参数的绝对值package com.leo.demo; /** * @author java */public class MainClass
="com.testing.App" mvn exec:java -Dexec.mainClass="com.testing.Chaxunyure" mvn exec:java -Dexec.mainClass ="com.testing.PreheatSnapshot" mvn exec:java -Dexec.mainClass="com.testing.StopPreheatedSnapshots" 6、 编译和执行可以2步连在一起搞 mvn compile exec:java -Dexec.mainClass="com.testing.App" mvn compile exec:java -Dexec.mainClass =false mvn compile exec:java -Dexec.mainClass="com.testing.App" -Dexec.cleanupDaemonThreads=false mvn exec:java -Dexec.mainClass="com.testing.StopPreheatedSnapshots" -Dexec.cleanupDaemonThreads=false ②给
>com.xxg.Main</mainClass> </manifest> </archive> >com.xxg.Main</mainClass>指定MANIFEST.MF中的Main-Class,<addClasspath>true</addClasspath>会在MANIFEST.MF加上Class-Path >com.xxg.Main</mainClass> </manifest> </archive> >com.xxg.Main</mainClass> </transformer> </ >com.xxg.Main</mainClass> </transformer>
manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass >com.xxg.Main</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> </executions> </plugin> </plugins> </build> maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容, <mainClass >com.xxg.Main</mainClass>指定MANIFEST.MF中的Main-Class, <addClasspath>true</addClasspath>会在MANIFEST.MF加上Class-Path >com.xxg.Main</mainClass> </transformer>
代码如下: class MainClass { static void <? 问题在MainClass中,他违背了“不要和陌生人说话”的公理。 因为MainClass中使用了创建具体类的工厂。 从上面的代码可以看出MainClass实际上在参数未传达到之前并不知道具体的工厂,而且他只是简单的创建好类后有给了InventoryMgr 。 MainClass的另一个弊端是他不是高内聚的。 MainClass 不应该考虑到底使用那个具体类来处理请求,他只是派发消息的代理。 MainClass的作用只是接受客户消息请求,然后传达给InventoryMgr 做进一步的处理。使用反射机制可以更好的解决这个问题。
properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <exec.mainClass >study20161230.Test</exec.mainClass> </properties> <build> <plugins> <plugin org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass >${exec.mainClass}</mainClass> </transformer>
>com.test.MainClass</mainClass> <! --带有包路径的MainClass --> </transformer> </transformers> version>2.4</version> <configuration> <archive> <manifest> <mainClass >com.test.MainClass</mainClass> <! --带有包路径的MainClass --> </manifest> </archive> <descriptorRefs>
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass >com.guanjian.SpringnettyApplication</mainClass> </transformer> </configuration downloadUrl>http://java.com/download</downloadUrl> <classPath> <mainClass >com.guanjian.SpringnettyApplication</mainClass> <preCp>anything</preCp> 要改的地方就是两个<mainClass></mainClass>改成你自己的springboot主类,另外加一个0.ico的图片放到<icon>src/main/resources/0.ico</icon
本地测试 编译源码 mvn compile mvn install 启动服务 源码启动方式 1 2cd cd server mvn exec:java -Dexec.mainClass="com.alibaba.fescar.server.Server /data 启动example 首先修改数据库配置保证可以正常连接 AccountServiceImpl 1 2cd examples mvn exec:java -Dexec.mainClass com.alibaba.fescar.tm.dubbo.impl.AccountServiceImpl" -Djava.net.preferIPv4Stack=true StorageServiceImpl 1 2cd examples mvn exec:java -Dexec.mainClass com.alibaba.fescar.tm.dubbo.impl.StorageServiceImpl" -Djava.net.preferIPv4Stack=true OrderServiceImpl 1 2cd examples mvn exec:java -Dexec.mainClass -Djava.net.preferIPv4Stack=true BusinessServiceImpl调用测试 1 2cd examples mvn exec:java -Dexec.mainClass
tomcat7-maven-plugin 参考 ---- 打包方法 方法一:使用maven-jar-plugin和maven-dependency-plugin 首先,maven-jar-plugin的作用是配置mainClass > org.baeldung.executable.ExecutableMavenJar </mainClass> 配置正确了才能找到依赖 mainClass: 指定启动时的Main Class 其次,maven-dependency-plugin会把所依赖的jar包copy到指定目录 <plugin> > com.michealyang.jetty.embeded.EmbeddedJettyServer </mainClass > org.baeldung.executable.ExecutableMavenJar </mainClass>
addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass 2.3</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass >theMainClass</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <groupId> >com.hgst.checkalertgroup.App</mainClass> </transformer> </transformers> </configuration> </execution >com.hgst.checkalertgroup.App</mainClass> </manifest> </archive> </configuration> </plugin>
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass >Jsoup.JsoupTest</mainClass> </transformer> </transformers transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass >com.demo.main</mainClass> </transformer> 博客地址:http://my.oschina.net/wangnian
类方法 xxxValue用于将number对象转换为xxx数据类型的值并返回 package com.leo.demo; /** * @author Java */ public class MainClass compareTo() 方法用于将 Number 对象与方法的参数进行比较 package com.leo.demo; /** * @author java */ public class MainClass } } equals()用于判断Number对象与方法的参数是否相等 package com.leo.demo; /** * @author java */ public class MainClass } } valueOf() 方法用于返回给定参数的原生 Number 对象值 package com.leo.demo; /** * @author java */ public class MainClass (Math.floor(1.3)); } } round()四舍五入 package com.leo.demo; /** * @author java */ public class MainClass
################## #初始化psid变量(全局) psid=0 checkpid() { javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS (pid=$psid)" echo "================================" else echo -n "Starting $APP_MAINCLASS JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS >/dev/null 2>&1 & (pid=$psid)" else echo "$APP_MAINCLASS is not running" fi } ############################ =$APP_MAINCLASS" echo "****************************" } ################################### #读取脚本的第一个参数
java MainClass if run from the/apps directory B. javacom.company.application.MainClass if run from the /apps directory C. java -classpath /appscom.company.application.MainClass if run from any directory D. MainClass ifrun from the /apps/com/company/application directory E. MainClass if run from the /apps directory F.
集群启动的脚本如下 bin/yarn-session.sh -n4 -jm1024 -tm 4096 -s 2 任务运行模式 同步和异步 主要体现命令的区别在如下 同步 bin/flink run -c mainClass /path/to/user/jar 异步 bin/flink run -d -c mainClass /path/to/user/jar per job per job,是每个任务对应一个集群,每次提交的时候会单独拉一个集群起来 ,任务run的命令如下 同步 bin/flink run -m yarn-cluster -d -c mainClass /path/to/user/jar 异步 bin/flink run -d -m yarn-cluster -d -c mainClass /path/to/user/jar
, mainID, mainArgs); 在上面的代码中我们可以看到,JVM在启动过程中会根据指定的 MainClass 即初始类去获取该类中的 main 方法,同时这里也明确了main方法必须是静态的 = 0) { // 如果使用jar方式运行,则从对应jar中获取mainClass mainClassName = GetMainClassName(env, jarfile = LoadClass(env, classname); if(mainClass == NULL) { /* exception occured */ const } (*env)->ReleaseStringUTFChars(env, mainClassName, classname); } else { // 直接指定入口mainClass = LoadClass(env, classname); if(mainClass == NULL) { /* exception occured */ const char
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass >com.example.MainClass</mainClass> </transformer> </transformers> 设置主类在上述配置中,<mainClass>标签指定了程序的入口类。你需要将其替换为你项目中的实际主类名称,例如com.example.MainClass。 >com.example.MainApp</mainClass> </transformer> 解释配置<mainClass>:指定主类,即包含 main 方法的类。