求大佬们帮帮忙 这是我cmd启动的代码 一些配置文件我看了一下路径都是对的 在我本机上启动是正常的 我放在虚拟机里启动就闪退 private static void startTomcatFromJavaCmd(String tomcatHome, boolean loadtimeWeaving){
String configPath = tomcatHome + "\\test\\config.xml"; 
try {
writeConfigFile(tomcatHome, configPath);
} catch (IOException e) { 
e.printStackTrace();


Options options = Global.v().getOptions();
String agentDLL  = options.getTomcatAgentDLL();
String jreHome = System.getProperty("java.home");
String hookerPath = options.getHookerPath(); 

String javaBin = "\"" + jreHome + "\\bin\\java.exe\"";
String cmdline = javaBin + " -agentpath:\"" + agentDLL  + "\"=\"" + configPath +"\""  
             + " -Xbootclasspath/p:\"" + hookerPath  + "\" -noverify"
             + " -Djava.util.logging.config.file=\"" + tomcatHome + "\\conf\\logging.properties\""
             + " -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
             + " -Djava.endorsed.dirs=\"" + tomcatHome + "\\endorsed\""
             + " -classpath \"" + tomcatHome + "\\bin\\bootstrap.jar\";\""
                           + tomcatHome + "\\bin\\tomcat-juli.jar\""
             + " -Dcatalina.base=\"" + tomcatHome + "\""
             + " -Dcatalina.home=\"" + tomcatHome + "\""
             + " -Djava.io.tmpdir=\"" + tomcatHome + "\\temp\""  
             + " org.apache.catalina.startup.Bootstrap start";  
cmdline.hashCode();

List<String> cmdlineArgs = new ArrayList<String>();
cmdlineArgs.add("cmd");
cmdlineArgs.add("/c");
cmdlineArgs.add("start");
cmdlineArgs.add("/wait");
cmdlineArgs.add("\"Tomcat\"");
cmdlineArgs.add(javaBin);

if(options.isTomcatRemoteDebuggingEnabled()){
//-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8888,server=y,suspend=n
cmdlineArgs.add("-Xdebug");
cmdlineArgs.add("-Xrunjdwp:transport=dt_socket,address=127.0.0.1:8888,server=y,suspend=n");
}

if(loadtimeWeaving){
String weaver = Global.v().getWeaverAgent();
cmdlineArgs.add("-javaagent:\"" + weaver  + "\"");
}

cmdlineArgs.add("-agentpath:\"" + agentDLL  + "\"=\"" + configPath +"\"");
cmdlineArgs.add("-Xbootclasspath/p:\"" + hookerPath  + "\"");
cmdlineArgs.add("-noverify");
cmdlineArgs.add("-Djava.util.logging.config.file=\"" + tomcatHome + "\\conf\\logging.properties\"");
cmdlineArgs.add("-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager");
cmdlineArgs.add("-Djava.endorsed.dirs=\"" + tomcatHome + "\\endorsed\"");
cmdlineArgs.add("-classpath");
cmdlineArgs.add("\"" + tomcatHome + "\\bin\\bootstrap.jar\";\"" + tomcatHome + "\\bin\\tomcat-juli.jar\"");
cmdlineArgs.add("-Dcatalina.base=\"" + tomcatHome + "\"");
cmdlineArgs.add("-Dcatalina.home=\"" + tomcatHome + "\"");
cmdlineArgs.add("-Djava.io.tmpdir=\"" + tomcatHome + "\\temp\"");
cmdlineArgs.add("org.apache.catalina.startup.Bootstrap");
cmdlineArgs.add("start");

Map<String,String> env = new HashMap<String,String>(); 
String dir = tomcatHome;
CmdRunner.runCommand(dir, env, cmdlineArgs, true, false);
}            

解决方案 »

  1.   

    在虚拟机上我用命令行启动时 窗口一闪而过 tomcat的日志中也没有任何信息显示 
      

  2.   

    如果你的tomcat是64位的,检查下你jdk版本,是32位还是64位的:
    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)64位jdk一定要有 64-Bit 字样,没有的默认是32位。
      

  3.   

    windows上,打开cmd,在命令行执行tomcat的start.bat
      

  4.   

    可能是你的tomcat包中缺少了一些文件,可以去官网下一个Tomcat,重新配置一下试试