java

阅读 / 问答 / 标签

java如何调用windows的命令?

用java做病毒啊?有难度..

如何在Java中执行其它程序

在编写Java程序时,有时候需要在Java程序中执行另外一个程序。1、启动程序Java提供了两种方法用来启动其它程序:(1)使用Runtime的exec()方法(2)使用ProcessBuilder的start()方法不管在哪种操作系统下,程序具有基本类似的一些属性。一个程序启动后就程序操作系统的一个进程,进程在执行的时候有自己的环境变量、有自己的工作目录。Runtime和ProcessBuilder提供了不同的方式来启动程序,设置启动参数、环境变量和工作目录。能够在Java中执行的外部程序,必须是一个实际存在的可执行文件,对于shell下的内嵌命令是不能直接执行的。采用Runtime的exec执行程序时,首先要使用Runtime的静态方法得到一个Runtime,然后调用Runtime的exec方法。可以将要执行的外部程序和启动参数、环境变量、工作目录作为参数传递给exec方法,该方法执行后返回一个Process代表所执行的程序。Runtime有六个exec方法,其中两个的定义为:public Process exec(String[] cmdarray, String[] envp, File dir)public Process exec(String command, String[] envp, File dir)cmdarray和command为要执行的命令,可以将命令和参数作为一个字符串command传递给exec()方法,也可以将命令和参数一个一个的方在数组cmdarray里传递给exec()方法。envp为环境变量,以name=value的形式放在数组中。dir为工作目录。可以不要dir参数,或者不要envp和dir参数,这样就多出了其它4个exec()方法。如果没有dir参数或者为null,那么新启动的进程就继承当前java进程的工作目录。如果没有envp参数或者为null,那么新启动的进程就继承当前java进程的环境变量。也可以使用ProcessBuilder类启动一个新的程序,该类是后来添加到JDK中的,而且被推荐使用。通过构造函数设置要执行的命令以及参数,或者也可以通过command()方法获取命令信息后在进行设置。通过directory(File directory) 方法设置工作目录,通过environment()获取环境变量信息来修改环境变量。在使用ProcessBuilder构造函数创建一个新实例,设置环境变量、工作目录后,可以通过start()方法来启动新程序,与Runtime的exec()方法一样,该方法返回一个Process对象代表启动的程序。ProcessBuilder与Runtime.exec()方法的不同在于ProcessBuilder提供了redirectErrorStream(boolean redirectErrorStream) 方法,该方法用来将进程的错误输出重定向到标准输出里。即可以将错误输出都将与标准输出合并。2、Process不管通过那种方法启动进程后,都会返回一个Process类的实例代表启动的进程,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法:(1) void destroy()杀掉子进程。一般情况下,该方法并不能杀掉已经启动的进程,不用为好。(2) int exitValue()返回子进程的出口值。只有启动的进程执行完成、或者由于异常退出后,exitValue()方法才会有正常的返回值,否则抛出异常。(3)InputStream getErrorStream()获取子进程的错误流。如果错误输出被重定向,则不能从该流中读取错误输出。(4)InputStream getInputStream()获取子进程的输入流。可以从该流中读取进程的标准输出。(5)OutputStream getOutputStream()获取子进程的输出流。写入到该流中的数据作为进程的标准输入。(6) int waitFor()导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。通过该类提供的方法,可以实现与启动的进程之间通信,达到交互的目的。3、从标准输出和错误输出流读取信息从启动其他程序的Java进程看,已启动的其他程序输出就是一个普通的输入流,可以通过getInputStream()和getErrorStream来获取。对于一般输出文本的进程来说,可以将InputStream封装成BufferedReader,然后就可以一行一行的对进程的标准输出进行处理。4、举例(1)Runtime.exec()import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;public class Test1 {public static void main(String[] args) {try {Process p = null;String line = null;BufferedReader stdout = null;//list the files and directorys under C:p = Runtime.getRuntime().exec("CMD.exe /C dir", null, new File("C:\"));stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();//echo the value of NAMEp = Runtime.getRuntime().exec("CMD.exe /C echo %NAME%", new String[] {"NAME=TEST"}); stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();} catch (Exception e) {e.printStackTrace();}}(2)ProcessBuilderimport java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class Test2 {public static void main(String[] args) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String line = null;BufferedReader stdout = null;//list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));p = pb.start();stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();//echo the value of NAMEpb = new ProcessBuilder();mand(new String[] {"CMD.exe", "/C", "echo %NAME%"});pb.environment().put("NAME", "TEST");p = pb.start();stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();} catch (Exception e) {e.printStackTrace();}}}5、获取进程的返回值通常,一个程序/进程在执行结束后会向操作系统返回一个整数值,0一般代表执行成功,非0表示执行出现问题。有两种方式可以用来获取进程的返回值。一是利用waitFor(),该方法是阻塞的,执导进程执行完成后再返回。该方法返回一个代表进程返回值的整数值。另一个方法是调用exitValue()方法,该方法是非阻塞的,调用立即返回。但是如果进程没有执行完成,则抛出异常。6、阻塞的问题由Process代表的进程在某些平台上有时候并不能很好的工作,特别是在对代表进程的标准输入流、输出流和错误输出进行操作时,如果使用不慎,有可能导致进程阻塞,甚至死锁。如果将以上事例中的从标准输出重读取信息的语句修改为从错误输出流中读取:stdout = new BufferedReader(new InputStreamReader(p.getErrorStream()));那么程序将发生阻塞,不能执行完成,而是hang在那里。当进程启动后,就会打开标准输出流和错误输出流准备输出,当进程结束时,就会关闭他们。在以上例子中,错误输出流没有数据要输出,标准输出流中有数据输出。由于标准输出流中的数据没有被读取,进程就不会结束,错误输出流也就不会被关闭,因此在调用readLine()方法时,整个程序就会被阻塞。为了解决这个问题,可以根据输出的实际先后,先读取标准输出流,然后读取错误输出流。但是,很多时候不能很明确的知道输出的先后,特别是要操作标准输入的时候,情况就会更为复杂。这时候可以采用线程来对标准输出、错误输出和标准输入进行分别处理,根据他们之间在业务逻辑上的关系决定读取那个流或者写入数据。针对标准输出流和错误输出流所造成的问题,可以使用ProcessBuilder的redirectErrorStream()方法将他们合二为一,这时候只要读取标准输出的数据就可以了。当在程序中使用Process的waitFor()方法时,特别是在读取之前调用waitFor()方法时,也有可能造成阻塞。可以用线程的方法来解决这个问题,也可以在读取数据后,调用waitFor()方法等待程序结束。总之,解决阻塞的方法应该有两种:(1)使用ProcessBuilder类,利用redirectErrorStream方法将标准输出流和错误输出流合二为一,在用start()方法启动进程后,先从标准输出中读取数据,然后调用waitFor()方法等待进程结束。如:import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class Test3 {public static void main(String[] args) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String line = null;BufferedReader stdout = null;//list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));//merge the error output with the standard outputpb.redirectErrorStream(true);p = pb.start();//read the standard outputstdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}int ret = p.waitFor();System.out.println("the return code is " + ret);stdout.close();} catch (Exception e) {e.printStackTrace();}}}(2)使用线程import java.util.*;import java.io.*;class StreamWatch extends Thread {InputStream is;String type;List output = new ArrayList();boolean debug = false;StreamWatch(InputStream is, String type) {this(is, type, false);}StreamWatch(InputStream is, String type, boolean debug) {this.is = is;this.type = type;this.debug = debug;}public void run() {try {PrintWriter pw = null;InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null) {output.add(line);if (debug)System.out.println(type + ">" + line);}if (pw != null)pw.flush();} catch (IOException ioe) {ioe.printStackTrace();}}public List getOutput() {return output;}}public class Test5 {public static void main(String args[]) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;// list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));p = pb.start();// process error and output messageStreamWatch errorWatch = new StreamWatch(p.getErrorStream(),"ERROR");StreamWatch outputWatch = new StreamWatch(p.getInputStream(),"OUTPUT");// start to watcherrorWatch.start();outputWatch.start();//wait for exitint exitVal = p.waitFor();//print the content from ERROR and OUTPUTSystem.out.println("ERROR: " + errorWatch.getOutput());System.out.println("OUTPUT: " + outputWatch.getOutput());System.out.println("the return code is " + exitVal);} catch (Throwable t) {t.printStackTrace();}}}7、在Java中执行Java程序执行一个Java程序的关键在于:(1)知道JAVA虚拟机的位置,即java.exe或者java的路径(2)知道要执行的java程序的位置(3)知道该程序所依赖的其他类的位置举一个例子,一目了然。(1)待执行的Java类public class MyTest {public static void main(String[] args) {System.out.println("OUTPUT one");System.out.println("OUTPUT two");System.err.println("ERROR 1");System.err.println("ERROR 2"); for(int i = 0; i < args.length; i++){System.out.printf("args[%d] = %s.", i, args[i]);}}}(2)执行该类的程序import java.util.*;import java.io.*;class StreamWatch extends Thread {InputStream is;String type;List output = new ArrayList();boolean debug = false;StreamWatch(InputStream is, String type) {this(is, type, false);}StreamWatch(InputStream is, String type, boolean debug) {this.is = is;this.type = type;this.debug = debug;}public void run() {try {PrintWriter pw = null;InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null) {output.add(line);if (debug)System.out.println(type + ">" + line);}if (pw != null)pw.flush();} catch (IOException ioe) {ioe.printStackTrace();}}public List getOutput() {return output;}}public class Test6 {public static void main(String args[]) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";String classpath = System.getProperty("java.class.path");// list the files and directorys under C:list.add(java);list.add("-classpath");list.add(classpath);list.add(MyTest.class.getName());list.add("hello");list.add("world");list.add("good better best");pb = new ProcessBuilder(list);p = pb.start();System.out.println(mand());// process error and output messageStreamWatch errorWatch = new StreamWatch(p.getErrorStream(),"ERROR");StreamWatch outputWatch = new StreamWatch(p.getInputStream(),"OUTPUT");// start to watcherrorWatch.start();outputWatch.start();//wait for exitint exitVal = p.waitFor();//print the content from ERROR and OUTPUTSystem.out.println("ERROR: " + errorWatch.getOutput());System.out.println("OUTPUT: " + outputWatch.getOutput());System.out.println("the return code is " + exitVal);} catch (Throwable t) {t.printStackTrace();}}}

Java 调 cmd 怎么控制该进程结束

期待大侠解决!

java process.waitfor=3是什么意思

2进制位运算,表示a无条件右移3位,如果a=16,那么a>>>3的结果是2. 原理:16的2进制表示00001000 2的2进制表示00000010

JAVA多线程 模拟每隔一秒输入一个数据

对于读取字符类型的文件,直接使用增强流中的readLine,一次就是一行,不用你想的这么麻烦!

用java实现一个模拟操作系统内核运行的程序。(1)进程控制:其中包括进程创建与撤销

在编写Java程序时,有时候需要在Java程序中执行另外一个程序。  1、启动程序Java提供了两种方法用来启动其它程序:  (1)使用Runtime的exec()方法  (2)使用ProcessBuilder的start()方法  不管在哪种操作系统下,程序具有基本类似的一些属性。一个程序启动后就程序操作系统的一个进程,进程在执行的时候有自己的环境变量、有自己的工作目录。Runtime和ProcessBuilder提供了不同的方式来启动程序,设置启动参数、环境变量和工作目录。  能够在Java中执行的外部程序,必须是一个实际存在的可执行文件,对于shell下的内嵌命令是不能直接执行的。  采用Runtime的exec执行程序时,首先要使用Runtime的静态方法得到一个Runtime,然后调用Runtime的exec方法。可以将要执行的外部程序和启动参数、环境变量、工作目录作为参数传递给exec方法,该方法执行后返回一个Process代表所执行的程序。  Runtime有六个exec方法,其中两个的定义为:  public Process exec(String[] cmdarray, String[] envp, File dir)  public Process exec(String command, String[] envp, File dir)  cmdarray和command为要执行的命令,可以将命令和参数作为一个字符串command传递给exec()方法,也可以将命令和参数一个一个的方在数组cmdarray里传递给exec()方法。  envp为环境变量,以name=value的形式放在数组中。dir为工作目录。  可以不要dir参数,或者不要envp和dir参数,这样就多出了其它4个exec()方法。如果没有dir参数或者为null,那么新启动的进程就继承当前java进程的工作目录。如果没有envp参数或者为null,那么新启动的进程就继承当前java进程的环境变量。  也可以使用ProcessBuilder类启动一个新的程序,该类是后来添加到JDK中的,而且被推荐使用。通过构造函数设置要执行的命令以及参数,或者也可以通过command()方法获取命令信息后在进行设置。通过directory(File directory) 方法设置工作目录,通过environment()获取环境变量信息来修改环境变量。  在使用ProcessBuilder构造函数创建一个新实例,设置环境变量、工作目录后,可以通过start()方法来启动新程序,与Runtime的exec()方法一样,该方法返回一个Process对象代表启动的程序。  ProcessBuilder与Runtime.exec()方法的不同在于ProcessBuilder提供了redirectErrorStream(boolean redirectErrorStream) 方法,该方法用来将进程的错误输出重定向到标准输出里。即可以将错误输出都将与标准输出合并。  2、Process  不管通过那种方法启动进程后,都会返回一个Process类的实例代表启动的进程,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法:  (1) void destroy()  杀掉子进程。  一般情况下,该方法并不能杀掉已经启动的进程,不用为好。  (2) int exitValue()  返回子进程的出口值。  只有启动的进程执行完成、或者由于异常退出后,exitValue()方法才会有正常的返回值,否则抛出异常。  (3)InputStream getErrorStream()  获取子进程的错误流。  如果错误输出被重定向,则不能从该流中读取错误输出。  (4)InputStream getInputStream()  获取子进程的输入流。  可以从该流中读取进程的标准输出。  (5)OutputStream getOutputStream()  获取子进程的输出流。  写入到该流中的数据作为进程的标准输入。  (6) int waitFor()  导致当前线程等待,如有必要,一直要等到由该 Process 对象表示的进程已经终止。  通过该类提供的方法,可以实现与启动的进程之间通信,达到交互的目的。  3、从标准输出和错误输出流读取信息  从启动其他程序的Java进程看,已启动的其他程序输出就是一个普通的输入流,可以通过getInputStream()和getErrorStream来获取。  对于一般输出文本的进程来说,可以将InputStream封装成BufferedReader,然后就可以一行一行的对进程的标准输出进行处理。  4、举例  (1)Runtime.exec()  import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;  public class Test1 {public static void main(String[] args) {try {Process p = null;String line = null;BufferedReader stdout = null;  //list the files and directorys under C:p = Runtime.getRuntime().exec("CMD.exe /C dir", null, new File("C:\"));stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();  //echo the value of NAMEp = Runtime.getRuntime().exec("CMD.exe /C echo %NAME%", new String[] {"NAME=TEST"}); stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();} catch (Exception e) {e.printStackTrace();}}  (2)ProcessBuilder    import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;  public class Test2 {public static void main(String[] args) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String line = null;BufferedReader stdout = null;//list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));p = pb.start();stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();  //echo the value of NAMEpb = new ProcessBuilder();mand(new String[] {"CMD.exe", "/C", "echo %NAME%"});pb.environment().put("NAME", "TEST");p = pb.start();stdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}stdout.close();} catch (Exception e) {e.printStackTrace();}}  }  5、获取进程的返回值  通常,一个程序/进程在执行结束后会向操作系统返回一个整数值,0一般代表执行成功,非0表示执行出现问题。有两种方式可以用来获取进程的返回值。一是利用waitFor(),该方法是阻塞的,执导进程执行完成后再返回。该方法返回一个代表进程返回值的整数值。另一个方法是调用exitValue()方法,该方法是非阻塞的,调用立即返回。但是如果进程没有执行完成,则抛出异常。  6、阻塞的问题  由Process代表的进程在某些平台上有时候并不能很好的工作,特别是在对代表进程的标准输入流、输出流和错误输出进行操作时,如果使用不慎,有可能导致进程阻塞,甚至死锁。  如果将以上事例中的从标准输出重读取信息的语句修改为从错误输出流中读取:    stdout = new BufferedReader(new InputStreamReader(p.getErrorStream()));  那么程序将发生阻塞,不能执行完成,而是hang在那里。  当进程启动后,就会打开标准输出流和错误输出流准备输出,当进程结束时,就会关闭他们。在以上例子中,错误输出流没有数据要输出,标准输出流中有数据输出。由于标准输出流中的数据没有被读取,进程就不会结束,错误输出流也就不会被关闭,因此在调用readLine()方法时,整个程序就会被阻塞。为了解决这个问题,可以根据输出的实际先后,先读取标准输出流,然后读取错误输出流。  但是,很多时候不能很明确的知道输出的先后,特别是要操作标准输入的时候,情况就会更为复杂。这时候可以采用线程来对标准输出、错误输出和标准输入进行分别处理,根据他们之间在业务逻辑上的关系决定读取那个流或者写入数据。  针对标准输出流和错误输出流所造成的问题,可以使用ProcessBuilder的redirectErrorStream()方法将他们合二为一,这时候只要读取标准输出的数据就可以了。  当在程序中使用Process的waitFor()方法时,特别是在读取之前调用waitFor()方法时,也有可能造成阻塞。可以用线程的方法来解决这个问题,也可以在读取数据后,调用waitFor()方法等待程序结束。  总之,解决阻塞的方法应该有两种:  (1)使用ProcessBuilder类,利用redirectErrorStream方法将标准输出流和错误输出流合二为一,在用start()方法启动进程后,先从标准输出中读取数据,然后调用waitFor()方法等待进程结束。  如:    import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;  public class Test3 {public static void main(String[] args) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String line = null;BufferedReader stdout = null;//list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));//merge the error output with the standard outputpb.redirectErrorStream(true);p = pb.start();//read the standard outputstdout = new BufferedReader(new InputStreamReader(p.getInputStream()));while ((line = stdout.readLine()) != null) {System.out.println(line);}int ret = p.waitFor();System.out.println("the return code is " + ret);stdout.close();  } catch (Exception e) {e.printStackTrace();}}  }  (2)使用线程    import java.util.*;import java.io.*;  class StreamWatch extends Thread {InputStream is;  String type;  List output = new ArrayList();  boolean debug = false;  StreamWatch(InputStream is, String type) {this(is, type, false);}  StreamWatch(InputStream is, String type, boolean debug) {this.is = is;this.type = type;this.debug = debug;}  public void run() {try {PrintWriter pw = null;  InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null) {output.add(line);if (debug)System.out.println(type + ">" + line);}if (pw != null)pw.flush();} catch (IOException ioe) {ioe.printStackTrace();}}  public List getOutput() {return output;}}  public class Test5 {public static void main(String args[]) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;  // list the files and directorys under C:list.add("CMD.EXE");list.add("/C");list.add("dir");pb = new ProcessBuilder(list);pb.directory(new File("C:\"));p = pb.start();  // process error and output messageStreamWatch errorWatch = new StreamWatch(p.getErrorStream(),"ERROR");StreamWatch outputWatch = new StreamWatch(p.getInputStream(),"OUTPUT");  // start to watcherrorWatch.start();outputWatch.start();  //wait for exitint exitVal = p.waitFor();  //print the content from ERROR and OUTPUTSystem.out.println("ERROR: " + errorWatch.getOutput());System.out.println("OUTPUT: " + outputWatch.getOutput());System.out.println("the return code is " + exitVal);  } catch (Throwable t) {t.printStackTrace();}}}  7、在Java中执行Java程序  执行一个Java程序的关键在于:  (1)知道JAVA虚拟机的位置,即java.exe或者java的路径  (2)知道要执行的java程序的位置  (3)知道该程序所依赖的其他类的位置  举一个例子,一目了然。  (1)待执行的Java类  public class MyTest {public static void main(String[] args) {System.out.println("OUTPUT one");System.out.println("OUTPUT two");System.err.println("ERROR 1");System.err.println("ERROR 2"); for(int i = 0; i < args.length; i++){System.out.printf("args[%d] = %s.", i, args[i]);}}}  (2)执行该类的程序  import java.util.*;import java.io.*;  class StreamWatch extends Thread {InputStream is;  String type;  List output = new ArrayList();  boolean debug = false;  StreamWatch(InputStream is, String type) {this(is, type, false);}  StreamWatch(InputStream is, String type, boolean debug) {this.is = is;this.type = type;this.debug = debug;}  public void run() {try {PrintWriter pw = null;  InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null) {output.add(line);if (debug)System.out.println(type + ">" + line);}if (pw != null)pw.flush();} catch (IOException ioe) {ioe.printStackTrace();}}  public List getOutput() {return output;}}  public class Test6 {public static void main(String args[]) {try {List list = new ArrayList();ProcessBuilder pb = null;Process p = null;String java = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";String classpath = System.getProperty("java.class.path");// list the files and directorys under C:list.add(java);list.add("-classpath");list.add(classpath);list.add(MyTest.class.getName());list.add("hello");list.add("world");list.add("good better best");pb = new ProcessBuilder(list);p = pb.start();System.out.println(mand());  // process error and output messageStreamWatch errorWatch = new StreamWatch(p.getErrorStream(),"ERROR");StreamWatch outputWatch = new StreamWatch(p.getInputStream(),"OUTPUT");  // start to watcherrorWatch.start();outputWatch.start();  //wait for exitint exitVal = p.waitFor();  //print the content from ERROR and OUTPUTSystem.out.println("ERROR: " + errorWatch.getOutput());System.out.println("OUTPUT: " + outputWatch.getOutput());System.out.println("the return code is " + exitVal);  } catch (Throwable t) {t.printStackTrace();}}}

Java Process.waitFor()这个方法是做什么用的?是不是去等待这个进程结束的意思?

首先我们先使用 processBuilder 创建出该对象,该对象我这里暂时使用了第一个参数为 exe 文件的地址,第二个参数为传递参数,是我需要传给exe 的字符串。后边主要就是打印 输入流,获取exe 输出信息。其实到这里java 调用exe 就已经完 了,但是后续开发中遇到一种问题,就是程序莫名死锁,没有响应,于是使用debug 跟进代码,发现程序走到 waitfor 代码行的时候程序就出现了挂起的情况

java如何读取excel中报表(柱状图)的信息

public class Report { /**作用:报表样式的枚举,该类的getvalue方法返回对应值。<br> * Columns_2DVer:2D柱状垂直报表。<br> * Columns_3DVer:3D柱状垂直报表。<br> * Columns_2DHor:2D柱状水平报表。<br> * Columns_3DHor:3D柱状水平报表。 * */ public enum ReportType{ Columns_2DVer("Z2DV"), Columns_3DVer("Z3DV"), Columns_2DHor("Z2DH"), Columns_3DHor("Z3DH"), LineReport_2D("Line2D"), LineReport_3D("Line3D"), PieReport_2D("Pie2D"), PieReport_3D("Pie3D"); private ReportType(String a){ this.str=a; } private String str; public String getvalue(){ return this.str; } } /**作用:作为创建报表时的参数。<br> * 成员1:报表的标题。<br> * 成员2:报表的横坐标标题。<br> * 成员3:报表的纵坐标标题。<br> * 成员4:JSP页面的request对象。<br> * 成员5:报表所保存的文件名。<br> * 成员6:报表的长度。<br> * 成员7:报表的宽度。<br> * 成员8:报表的背景颜色,默认为白色。<br> * 成员9:报表网格中竖线的颜色,默认为黑色。<br> * 成员10:报表网格中横线的颜色,默认为黑色。<br> * 成员11:报表横轴内容的数组。<br> * 成员12:报表纵轴内容的list数组。<br> * 成员13:提示信息。如果写入多个提示信息,报表就变成多柱状。<br> * 成员14:报表的模式。详见reportType枚举类<br> * 成员15:饼状图专用的数值数组。数组的和必须等于1.<br> * 注意1:要在JSP页面引入该类型才能使用,横纵轴数组的长度必须一致。<br> * 注意2:如果在提示信息数组中写入了多个提示信息,那么报表纵轴内容的 * list中就必须存放入和它数量一致的int数组。否则会出错。 * */ public class ReportClass{ public String ReportTitle; public String xTitle; public String yTitle; public HttpServletRequest request; public String filename; public int width; public int height; public Color BackgroundColor=Color.WHITE; public Color ylineColor=Color.BLACK; public Color xlineColor=Color.BLACK; public String[] xValues; public ArrayList<int[]> yValue=new ArrayList<int[]>(); public String[] helpstr; public String reportType; public double[] PieValue; } /**作用:创建一个指定类型和数据的图表。<br> * 参数1:ReportClass类型,各成员具体作用参见ReportClass说明<br> * 返回值:String类型,在JSP页面可以直接out.println显示图形。<br> * 注意1:ReportClass类型中,必须设置的成员主要有:<br> * 1、ReportTitle 2、request 3、filename 4、width 5、height 6、reportType<br> * 注意2:如果要生成饼状图,还需要设置:<br> * 1、xValues 2、PieValue 这两个数组的长度必须一致<br> * 注意3:如果要生成柱状图或折线图,还需要设置:<br> * 1、xValues 2、yValue 3、helpstr<br> * yvalue数组总和必须等于1.即100%.<br> * 如果要生成多柱状或折线图,则需要设置helpstr长度。<br> * yvalue列表的长度必须和helpstr数组长度一致。<br> * yvalue中的成员数组的长度必须和xvalue数组长度一致。 * */ public String CreateReport(ReportClass rc){ String s="sf"; String str=""; JFreeChart jc=null; Font titlefont=new Font("宋体",Font.BOLD,20); Font tickfont=new Font("宋体",0,15); Font labelfont=new Font("宋体",Font.BOLD,15); DefaultCategoryDataset ds=null; DefaultPieDataset pds=null; if (rc.ReportTitle!=null){ if (rc.reportType.indexOf("Pie")!=-1){//饼状图 pds=new DefaultPieDataset(); double[] ob=rc.PieValue; for (int i=0;i<ob.length;i++){ pds.setValue(rc.xValues[i], ob[i]); } if (rc.ReportTitle!=null){ if (rc.reportType.equals("Pie2D")){ jc=ChartFactory.createPieChart(rc.ReportTitle,pds,true, true, false); } else if (rc.reportType.equals("Pie3D")){ jc=ChartFactory.createPieChart3D(rc.ReportTitle,pds,true, true, false); } jc.getTitle().setFont(titlefont); jc.getLegend().setItemFont(labelfont); jc.setBackgroundPaint(rc.BackgroundColor);//总背景色 jc.setBorderPaint(rc.BackgroundColor); PiePlot plot=(PiePlot)jc.getPlot(); plot.setBackgroundPaint(rc.BackgroundColor); plot.setLabelFont(new Font("宋体",0,15)); } } else { //柱状或折线图 ds=new DefaultCategoryDataset(); for (int i=0;i<rc.helpstr.length;i++){ int[] ob=rc.yValue.get(i); for (int j=0;j<ob.length;j++){ ds.addValue(ob[j], rc.helpstr[i], rc.xValues[j]); } } if (rc.reportType.indexOf("Z2D")!=-1){ PlotOrientation po=null; if (rc.reportType.indexOf("V")!=-1){ po=PlotOrientation.VERTICAL; } else if (rc.reportType.indexOf("H")!=-1){ po=PlotOrientation.HORIZONTAL; } jc=ChartFactory.createBarChart(rc.ReportTitle, rc.xTitle, rc.yTitle, ds, po, true, true, false); } else if (rc.reportType.indexOf("Z3D")!=-1){ PlotOrientation po=null; if (rc.reportType.indexOf("V")!=-1){ po=PlotOrientation.VERTICAL; } else if (rc.reportType.indexOf("H")!=-1){ po=PlotOrientation.HORIZONTAL; } jc=ChartFactory.createBarChart3D(rc.ReportTitle, rc.xTitle, rc.yTitle, ds, po, true, true, false); } else if (rc.reportType.equals("Line2D")){ PlotOrientation po=PlotOrientation.VERTICAL; jc=ChartFactory.createLineChart(rc.ReportTitle, rc.xTitle, rc.yTitle, ds, po, true, true, false); } else if (rc.reportType.equals("Line3D")){ PlotOrientation po=PlotOrientation.VERTICAL; jc=ChartFactory.createLineChart3D(rc.ReportTitle, rc.xTitle, rc.yTitle, ds, po, true, true, false); } jc.getTitle().setFont(titlefont); jc.getLegend().setItemFont(labelfont); jc.setBackgroundPaint(rc.BackgroundColor);//总背景色 CategoryPlot cp=jc.getCategoryPlot(); cp.setBackgroundPaint(rc.BackgroundColor);//图形框架背景色 cp.setDomainGridlinePaint(rc.ylineColor);//图形背景网格中竖线的颜色 cp.setDomainGridlinesVisible(true); cp.setRangeGridlinePaint(rc.xlineColor);//图形背景网格中横线的颜色 cp.getDomainAxis().setTickLabelFont(tickfont); cp.getDomainAxis().setLabelFont(labelfont); cp.getRangeAxis().setTickLabelFont(tickfont); cp.getRangeAxis().setLabelFont(labelfont); } try { File ff=new File(rc.request.getRealPath("/")+"file"); if (!ff.exists()){ ff.mkdir(); } File file=new File(rc.request.getRealPath("/")+"file/"+rc.filename); if (!file.exists()){ file.createNewFile(); } ChartUtilities.saveChartAsJPEG(file, jc, rc.width, rc.height); str="<img src=""+file.getPath()+"">"; return str; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } else { return null; } }}以前写的一个报表的集成,可以生成任何形式的报表,要引入JFreeChar.你可以慢慢研究下...

zookeeper java watcher 在哪个包

就在zookeeper包下,org.apache.zookeeper.Watcher

java正则表达式

转义字符错了,是2个\,不是/

java中,用布局器实现计算器界面 并实现加减乘除等功能,怎样编程

java写的,可行package ex1;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.BorderFactory;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButtonMenuItem;import javax.swing.JTextField;public class Calcutor extends JFrame {private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;//单选框private JCheckBoxMenuItem seeItem3;//复选框private ButtonGroup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = "=";private double result = 0;private Num numActionListener;private DecimalFormat df;public Calcutor(){super("科学计算器");//设置标题栏df = new DecimalFormat("#.####");//保留四位小数this.setLayout(new BorderLayout(10, 5));panel1 = new JPanel(new GridLayout(1, 3, 10, 10));panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列panel3 = new JPanel(new GridLayout(5, 1, 5, 5));panel4 = new JPanel(new BorderLayout(5, 5));/*** 菜单栏*/myBar = new JMenuBar();menu1 = new JMenu("编辑(E)");menu2 = new JMenu("查看(V)");menu3 = new JMenu("帮助(H)");menu1.setFont(new Font("宋体", Font.PLAIN, 12));menu2.setFont(new Font("宋体", Font.PLAIN, 12));menu3.setFont(new Font("宋体", Font.PLAIN, 12));/*** 编辑栏*/editItem1 = new JMenuItem("复制(C) Ctrl+C");editItem2 = new JMenuItem("粘贴(P) Ctrl+V");editItem1.setFont(new Font("宋体",Font.PLAIN,12));editItem2.setFont(new Font("宋体",Font.PLAIN,12));/*** 查看栏*/seeItem1 = new JRadioButtonMenuItem("科学型(T)");seeItem2 = new JRadioButtonMenuItem("标准型(S)");seeItem3 = new JCheckBoxMenuItem("数字分组(I)");seeItem1.setFont(new Font("宋体",Font.PLAIN,12));seeItem2.setFont(new Font("宋体",Font.PLAIN,12));seeItem3.setFont(new Font("宋体",Font.PLAIN,12));/*** 帮助栏*/help1 = new JMenuItem("帮助主题(H)");help2 = new JMenuItem("关于计算器(A)");help1.setFont(new Font("宋体",Font.PLAIN,12));help2.setFont(new Font("宋体",Font.PLAIN,12));bgb = new ButtonGroup();//选项组menu1.add(editItem1);menu1.add(editItem2);menu2.add(seeItem1);menu2.add(seeItem2);menu2.addSeparator();//添加一条分割线menu2.add(seeItem3);menu3.add(help1);menu3.addSeparator();//添加一条分割线menu3.add(help2);myBar.add(menu1);myBar.add(menu2);myBar.add(menu3);this.setJMenuBar(myBar);numActionListener = new Num();//实现数字监听/*** 文本域,即为计算器的屏幕显示区域*/tf = new JTextField();tf.setEditable(false);//文本区域不可编辑tf.setBackground(Color.white);//文本区域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐tf.setText("0");tf.setBorder(BorderFactory.createLoweredBevelBorder());init();//对计算器进行初始化}/*** 初始化操作* 添加按钮*/private void init(){addButton(panel1, "Backspace", new Clear(), Color.red);addButton(panel1, "CE", new Clear(), Color.red);addButton(panel1, "C", new Clear(), Color.red);addButton(panel2, "1/x", new Signs(), Color.magenta);addButton(panel2, "log", new Signs(), Color.magenta);addButton(panel2, "7", numActionListener, Color.blue);addButton(panel2, "8", numActionListener, Color.blue);addButton(panel2, "9", numActionListener, Color.blue);addButton(panel2, "÷", new Signs(), Color.red);addButton(panel2, "n!", new Signs(), Color.magenta);addButton(panel2, "sqrt", new Signs(), Color.magenta);addButton(panel2, "4", numActionListener, Color.blue);addButton(panel2, "5", numActionListener, Color.blue);addButton(panel2, "6", numActionListener, Color.blue);addButton(panel2, "×", new Signs(), Color.red);addButton(panel2, "sin", new Signs(), Color.magenta);addButton(panel2, "x^2", new Signs(), Color.magenta);addButton(panel2, "1", numActionListener, Color.blue);addButton(panel2, "2", numActionListener, Color.blue);addButton(panel2, "3", numActionListener, Color.blue);addButton(panel2, "-", new Signs(), Color.red);addButton(panel2, "cos", new Signs(), Color.magenta);addButton(panel2, "x^3", new Signs(), Color.magenta);addButton(panel2, "0", numActionListener, Color.blue);addButton(panel2, "-/+", new Clear(), Color.blue);addButton(panel2, ".", new Dot(), Color.blue);addButton(panel2, "+", new Signs(), Color.red);addButton(panel2, "tan", new Signs(), Color.magenta);addButton(panel2, "%", new Signs(), Color.magenta);addButton(panel2, "π", numActionListener, Color.orange);addButton(panel2, "e", numActionListener, Color.orange);addButton(panel2, "′″", new Signs(), Color.orange);addButton(panel2, "=", new Signs(), Color.red);JButton btns = new JButton("计算器");btns.setBorder(BorderFactory.createLoweredBevelBorder());btns.setEnabled(false);//按钮不可操作btns.setPreferredSize(new Dimension(20, 20));panel3.add(btns);//加入按钮addButton(panel3, "MC", null, Color.red);addButton(panel3, "MR", null, Color.red);addButton(panel3, "MS", null, Color.red);addButton(panel3, "M+", null, Color.red);panel4.add(panel1, BorderLayout.NORTH);panel4.add(panel2, BorderLayout.CENTER);this.add(tf, BorderLayout.NORTH);this.add(panel3, BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false);//窗口不可改变大小this.setLocation(300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 统一设置按钮的的使用方式* @param panel* @param name* @param action* @param color*/private void addButton(JPanel panel, String name, ActionListener action, Color color){JButton bt = new JButton(name);panel.add(bt);//在面板上增加按钮bt.setForeground(color);//设置前景(字体)颜色bt.addActionListener(action);//增加监听事件}/*** 计算器的基础操作(+ - × ÷)* @param x*/private void getResult (double x){if(oper == "+"){result += x;}else if(oper == "-"){result -= x;}else if(oper == "×"){result *= x;}else if(oper == "÷"){result /= x;}else if(oper == "="){result = x;}tf.setText(df.format(result));}/*** 运算符号的事件监听*/class Signs implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();/* sqrt求平方根 */if(str.equals("sqrt")){double i = Double.parseDouble(tf.getText());if(i>=0){/** String.valueOf() 转换为字符串* df.format() 按要求保留四位小数* Math.sqrt() 求算数平方根*/tf.setText(String.valueOf(df.format(Math.sqrt(i))));}else{tf.setText("负数不能开平方根");}}/* log求常用对数 */else if(str.equals("log")){double i = Double.parseDouble(tf.getText());if(i>0){tf.setText(String.valueOf(df.format(Math.log(i))));}else{tf.setText("负数不能求对数");}}/* %求百分比 */else if(str.equals("%")){tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));}/* 1/x求倒数 */else if(str.equals("1/x")){if(Double.parseDouble(tf.getText()) == 0){tf.setText("除数不能为零");}else{tf.setText(df.format(1 / Double.parseDouble(tf.getText())));}}/* sin求正弦函数 */else if(str.equals("sin")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.sin(i))));}/* cos求余弦函数 */else if(str.equals("cos")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.cos(i))));}/* tan求正切函数 */else if(str.equals("tan")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.tan(i))));}/* n!求阶乘 */else if(str.equals("n!")){double i = Double.parseDouble(tf.getText());if((i%2==0)||(i%2==1))//判断为整数放进行阶乘操作{int j = (int)i;//强制类型转换int result=1;for(int k=1;k<=j;k++)result *= k;tf.setText(String.valueOf(result));}else{tf.setText("无法进行阶乘");}}/* x^2求平方 */else if(str.equals("x^2")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i)));}/* x^3求立方 */else if(str.equals("x^3")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i*i)));}/* ′″角度转换 *//*** 将角度值转换成弧度值,方便三角函数的计算*/else if(str.equals("′″")){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(i/180*Math.PI));}else{if(flag){IfResult = false;}if(IfResult){oper = str;}else{getResult(Double.parseDouble(tf.getText()));oper = str;IfResult = true;}}}}/*** 清除按钮的事件监听*/class Clear implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();if(str == "C"){tf.setText("0");IfResult = true;result = 0;}else if(str == "-/+"){double i = 0 - Double.parseDouble(tf.getText().trim());tf.setText(df.format(i));}else if(str == "Backspace"){if(Double.parseDouble(tf.getText()) > 0){if(tf.getText().length() > 1){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));//使用退格删除最后一位字符}else{tf.setText("0");IfResult = true;}}else{if(tf.getText().length() > 2){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));}else{tf.setText("0");IfResult = true;}}}else if(str == "CE"){tf.setText("0");IfResult = true;}}}/*** 数字输入的事件监听*/class Num implements ActionListener{public void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if(IfResult){tf.setText("");IfResult = false;}if(str=="π"){tf.setText(String.valueOf(Math.PI));}else if(str=="e"){tf.setText(String.valueOf(Math.E));}else{tf.setText(tf.getText().trim() + str);if(tf.getText().equals("0")){tf.setText("0");IfResult = true;flag = true;}}}}/*** 小数点的事件监听*/class Dot implements ActionListener{public void actionPerformed(ActionEvent e) {IfResult = false;if(tf.getText().trim().indexOf(".") == -1){tf.setText(tf.getText() + ".");}}}/*** main方法*/public static void main(String[] args) {new Calcutor().setVisible(true);}}

java如何调用webservice接口

http://www.blogjava.net/zjhiphop/archive/2009/04/29/webservice.html有几种方法

求解一道Java实验题,给出一段代码,要求把该代码补充完整使其可以运行,具体要求如下

package xinguan;abstract class Operation{ //抽象类 public static double numberA= 0; public static double numberB = 0; abstract double getResult(); //抽象方法}class OperationADD extends Operation{ @Override double getResult() { return numberA+numberB; }}class OperationSUB extends Operation{ @Override double getResult() { return numberA-numberB; }}class OperationMUL extends Operation{ @Override double getResult() { return numberA*numberB; }}class OperationDIV extends Operation{ @Override double getResult() { return numberA/numberB; }}class OperationFactory{ public static Operation createOperate(char operate){ Operation oper = null; switch (operate){ case"+": oper= new OperationADD(); break; case"-": oper= new OperationSUB(); break; case"*": oper= new OperationMUL(); break; case"/": oper= new OperationDIV(); break; } return oper; }}public class CalculateDemo { /** * @param args */ public static void main(String[] args) { Operation operADD = OperationFactory.createOperate("+"); Operation operSUB = OperationFactory.createOperate("-"); Operation operMUL = OperationFactory.createOperate("*"); Operation operDIV = OperationFactory.createOperate("/"); operADD.numberA = 15.0; operADD.numberB = 3; System.out.println(operADD.getResult()); System.out.println(operSUB.getResult()); System.out.println(operMUL.getResult()); System.out.println(operDIV.getResult()); }}因为抽象类是静态方法 所以 给operADD 那个对象赋值一次就能获得所有结果。要是去掉static 那么就需要每个对象 赋值。现在基本满足你的要求了。

在java中利用apache的Axis来获取C#服务接口返回的DataTable数据

首先你要确定你的DataTable 里面是有数据的我不知道你的 Table里面是什么样的数据··ItemArray 返回 object [] 数组 你拿一个object 数组 去 Convert.toInt32() 你不报错我到觉得奇怪了 ·· 如果是业务需要··那就要另外来写 toInt32() 对你的需要行不通 他只返回一个数字 而不是 int数组!一般拿个Convert.toInt32(dt.Rows[1][2]) 就是这样了!

char oper在Java中是什么意思?

意思是创建一个名为oper的char类型的数据。就好像 String oper ,或者int a由于你后面没有具体的内容,所以只能解析到这里。请采纳,谢谢

Java 编程问题 我做的科学计算器,但是那个"M+","M-","MR","MC"这几个键我不会弄,下面是代码,求帮助。。

你能告诉我这4个有什么作用吗?写个数学例子我看看,然后写功能……

用Java语言做一个计算器

一点都不难用swing这个package然后上面画界面搞几个button作为数字0-9还有运算符最上面做个textbox显示针对计算按钮写个事件。。。

做java开发中,一般用什么UML建模工具?

1.UML通常用于软件开发的“需求分析”和“设计”阶段,即在“编码”阶段之前。2.采用标准的图示化的方式说明系统的需求、进行结构设计,通常称作建模。3.最早用于采用面向对象编程的语言,即面向对象方法。现在也用于其它行业的建模。4.java只是一种编程语言,一种开发工具。用它去开发或实现某个系统和产品时,首先需要了解和回答用它要做什么?你可以用文档也可以用图形来说明,但UML表示法是最标准和通用的,UML可让其它与你配合的人更清楚你的想法。5.图形是最简洁的表述思想方式。 补充:如果你是软件或者将系统开发作为方向(尤其是信息系统)那就必学,其它方向可暂时放放吧!学校能否教好值得怀疑。

java是luca皮下吗

题主是否想提问”Java是Luca旗下吗“?不是。Java是于1995年5月被推出的Java程序设计语言和Java平台的总称。2010年,甲骨文收购sun公司,java现在属于甲骨文(Oracle)公司。

如何使用javascript获取图片主体背景色(代码)

本篇文章给大家带来的内容是关于如何使用javascript获取图片主体背景色(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。我们打开谷歌访问的时候,发现谷歌图片加载之前会先预加载出来图片的主题颜色,当时就觉得很有意思,效果是这样当然他们这个是后端给json的时候给了个颜色代码,暂且不提,但如果前端来做的话,也是有方法的,张鑫旭大神的博客里就记载的有,是一个叫rgbaster.js的玩意儿,具体用法我先给贴下来了。rgbaster.js的内容是:!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):n.RGBaster=t()}(this,function(){"use strict";var t=function(n,o){var u=new Image,t=n.src||n;"data:"!==t.substring(0,5)&&(u.crossOrigin="Anonymous"),u.onload=function(){var n,t,e,r=(n=u.width,t=u.height,(e=document.createElement("canvas")).setAttribute("width",n),e.setAttribute("height",t),e.getContext("2d"));r.drawImage(u,0,0);var i=r.getImageData(0,0,u.width,u.height);o&&o(i.data)},u.src=t},s=function(n){return["rgb(",n,")"].join("")},f=function(n,t){return{name:s(n),count:t}},n={};return n.colors=function(n,u){var a=(u=u||{}).exclude||[],c=u.paletteSize||10;t(n,function(n){for(var t={},e="",r=[],i=0;i<n.length;i+=4)r[0]=n[i],r[1]=n[i+1],r[2]=n[i+2],e=r.join(","),-1===r.indexOf(void 0)&&0!==n[i+3]&&-1===a.indexOf(s(e))&&(t[e]=e in t?t[e]+1:1);if(u.success){var o=function(n,t){if(n.length>t)return n.slice(0,t);for(var e=n.length-1;e<t-1;e++)n.push(f("0,0,0",0));return n}(function(n){var t=[];for(var e in n)t.push(f(e,n[e]));return t.sort(function(n,t){return t.count-n.count}),t}(t),c+1);u.success({dominant:o[0].name,secondary:o[1].name,palette:o.map(function(n){return n.name}).slice(1)})}})},n});具体html和js的使用代码是:<html><head> <meta charset="UTF-8"> <title>获取图片主题色脚本扩展的完整的示例</title> <script src="./rgbaster.js"></script></head><body> <div id="box" style="width:500px;height: 500px;"> <img src="mm4.jpg" alt="" id="image"> </div> <script type="text/javascript"> var img = document.getElementById("image"); var box=document.getElementById("box"); RGBaster.colors(img, { // return up to 30 top colors from the palette 从调色板返回最多30个顶级颜色 paletteSize: 30, // don"t count white //排除 白色 exclude: ["rgb(255,255,255)"], // do something when done //获取成功之后 success: function(payload) { box.style.background=payload.dominant; console.log("Dominant color:", payload.dominant); console.log("Secondary color:", payload.secondary); console.log("Palette:", payload.palette); } }) </script></body></html>剩下的,效果一出,大家一目了然,就是这么简单。

在java中,如何每隔一段时间,执行某个过程?

我想在一个类中的A过程中,每隔5秒钟调用B过程一次,请问怎么写?请问不用线程和Timer,你怎么设定A类中能每隔5秒调用B类呢?

java设置servletoutputstream的文件名字

1. 核心代码//设置Mime-Typeresponse.setContentType("application/msword");//设置下载默认文件名response.setHeader("Content-Disposition", "attachment;filename=123.doc");登录后复制完整代码public R<Object> download(@PathVariable String id, HttpServletResponse response) { File uploadFile = new File(id + ".doc"); //获取后缀名 String suffix = uploadFile.substring(uploadFile.lastIndexOf(".")); String responseType = ResponseTypeUtils.getResponseContentByType(suffix); response.setContentType(responseType); response.setHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + suffix); //输入流,通过输入流读取文件内容 try (FileInputStream fileInputStream = new FileInputStream(uploadFile)) { ServletOutputStream outputStream = response.getOutputStream(); int len; byte[] bytes = new byte[1024]; while ((len = fileInputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, len); //刷新一下 outputStream.flush(); } //关闭资源 outputStream.close(); return R.ok(); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } }登录后复制当然也可以通过NIO的方式实现代码,具体可参见HttpServletResponse 返回图片的几种方法对比,核心代码如下:fis.getChannel().transferTo(0,fis.available(),Channels.newChannel(response.getOutputStream()));登录后复制3 参考状态码文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type).*( 二进制流,不知道下载文件类型) application/octet-stream .tif image/tiff.001 application/x-001 .301 application/x-301.323 text/h323 .906 application/x-906.907 drawing/907 .a11 application/x-a11.acp audio/x-mei-aac .ai application/postscript.aif audio/aiff .aifc audio/aiff.aiff audio/aiff .anv application/x-anv.asa text/asa .asf video/x-ms-asf.asp text/asp .asx video/x-ms-asf.au audio/basic .avi video/avi.awf application/vnd.adobe.workflow .biz text/xml.bmp application/x-bmp .bot application/x-bot.c4t application/x-c4t .c90 application/x-c90.cal application/x-cals .cat application/vnd.ms-pki.seccat.cdf application/x-netcdf .cdr application/x-cdr.cel application/x-cel .cer application/x-x509-ca-cert.cg4 application/x-g4 .cgm application/x-cgm.cit application/x-cit .class java/*.cml text/xml .cmp application/x-cmp.cmx application/x-cmx .cot application/x-cot.crl application/pkix-crl .crt application/x-x509-ca-cert.csi application/x-csi .css text/css.cut application/x-cut .dbf application/x-dbf.dbm application/x-dbm .dbx application/x-dbx.dcd text/xml .dcx application/x-dcx.der application/x-x509-ca-cert .dgn application/x-dgn.dib application/x-dib .dll application/x-msdownload.doc application/msword .dot application/msword.docx application/msword .xlsx application/vnd.ms-excel.drw application/x-drw .dtd text/xml.dwf Model/vnd.dwf .dwf application/x-dwf.dwg application/x-dwg .dxb application/x-dxb.dxf application/x-dxf .edn application/vnd.adobe.edn.emf application/x-emf .eml message/rfc822.ent text/xml .epi application/x-epi.eps application/x-ps .eps application/postscript.etd application/x-ebx .exe application/x-msdownload.fax image/fax .fdf application/vnd.fdf.fif application/fractals .fo text/xml.frm application/x-frm .g4 application/x-g4.gbr application/x-gbr .pptx application/vnd.ms-powerpoint.gif image/gif .gl2 application/x-gl2.gp4 application/x-gp4 .hgl application/x-hgl.hmr application/x-hmr .hpg application/x-hpgl.hpl application/x-hpl .hqx application/mac-binhex40.hrf application/x-hrf .hta application/hta.htc text/x-component .htm text/html.html text/html .htt text/webviewhtml.htx text/html .icb application/x-icb.ico image/x-icon .ico application/x-ico.iff application/x-iff .ig4 application/x-g4.igs application/x-igs .iii application/x-iphone.img application/x-img .ins application/x-internet-signup.isp application/x-internet-signup .IVF video/x-ivf.java java/* .jfif image/jpeg.jpe image/jpeg .jpe application/x-jpe.jpeg image/jpeg .jpg image/jpeg.jpg application/x-jpg .js application/x-javascript.jsp text/html .la1 audio/x-liquid-file.lar application/x-laplayer-reg .latex application/x-latex.lavs audio/x-liquid-secure .lbm application/x-lbm.lmsff audio/x-la-lms .ls application/x-javascript.ltr application/x-ltr .m1v video/x-mpeg.m2v video/x-mpeg .m3u audio/mpegurl.m4e video/mpeg4 .mac application/x-mac.man application/x-troff-man .math text/xml.mdb application/msaccess .mdb application/x-mdb.mfp application/x-shockwave-flash .mht message/rfc822.mhtml message/rfc822 .mi application/x-mi.mid audio/mid .midi audio/mid.mil application/x-mil .mml text/xml.mnd audio/x-musicnet-download .mns audio/x-musicnet-stream.mocha application/x-javascript .movie video/x-sgi-movie.mp1 audio/mp1 .mp2 audio/mp2.mp2v video/mpeg .mp3 audio/mp3.mp4 video/mpeg4 .mpa video/x-mpg.mpd application/vnd.ms-project .mpe video/x-mpeg.mpeg video/mpg .mpg video/mpg.mpga audio/rn-mpeg .mpp application/vnd.ms-project.mps video/x-mpeg .mpt application/vnd.ms-project.mpv video/mpg .mpv2 video/mpeg.mpw application/vnd.ms-project .mpx application/vnd.ms-project.mtx text/xml .mxp application/x-mmxp.net image/pnetvue .nrf application/x-nrf.nws message/rfc822 .odc text/x-ms-odc.out application/x-out .p10 application/pkcs10.p12 application/x-pkcs12 .p7b application/x-pkcs7-certificates.p7c application/pkcs7-mime .p7m application/pkcs7-mime.p7r application/x-pkcs7-certreqresp .p7s application/pkcs7-signature.pc5 application/x-pc5 .pci application/x-pci.pcl application/x-pcl .pcx application/x-pcx.pdf application/pdf .pdf application/pdf.pdx application/vnd.adobe.pdx .pfx application/x-pkcs12.pgl application/x-pgl .pic application/x-pic.pko application/vnd.ms-pki.pko .pl application/x-perl.plg text/html .pls audio/scpls.plt application/x-plt .png image/png.png application/x-png .pot application/vnd.ms-powerpoint.ppa application/vnd.ms-powerpoint .ppm application/x-ppm.pps application/vnd.ms-powerpoint .ppt application/vnd.ms-powerpoint.ppt application/x-ppt .pr application/x-pr.prf application/pics-rules .prn application/x-prn.prt application/x-prt .ps application/x-ps.ps application/postscript .ptn application/x-ptn.pwz application/vnd.ms-powerpoint .r3t text/vnd.rn-realtext3d.ra audio/vnd.rn-realaudio .ram audio/x-pn-realaudio.ras application/x-ras .rat application/rat-file.rdf text/xml .rec application/vnd.rn-recording.red application/x-red .rgb application/x-rgb.rjs application/vnd.rn-realsystem-rjs .rjt application/vnd.rn-realsystem-rjt.rlc application/x-rlc .rle application/x-rle.rm application/vnd.rn-realmedia .rmf application/vnd.adobe.rmf.rmi audio/mid .rmj application/vnd.rn-realsystem-rmj.rmm audio/x-pn-realaudio .rmp application/vnd.rn-rn_music_package.rms application/vnd.rn-realmedia-secure .rmvb application/vnd.rn-realmedia-vbr.rmx application/vnd.rn-realsystem-rmx .rnx application/vnd.rn-realplayer.rp image/vnd.rn-realpix .rpm audio/x-pn-realaudio-plugin.rsml application/vnd.rn-rsml .rt text/vnd.rn-realtext.rtf application/msword .rtf application/x-rtf.rv video/vnd.rn-realvideo .sam application/x-sam.sat application/x-sat .sdp application/sdp.sdw application/x-sdw .sit application/x-stuffit.slb application/x-slb .sld application/x-sld.slk drawing/x-slk .smi application/smil.smil application/smil .smk application/x-smk.snd audio/basic .sol text/plain.sor text/plain .spc application/x-pkcs7-certificates.spl application/futuresplash .spp text/xml.ssm application/streamingmedia .sst application/vnd.ms-pki.certstore.stl application/vnd.ms-pki.stl .stm text/html.sty application/x-sty .svg text/xml.swf application/x-shockwave-flash .tdf application/x-tdf.tg4 application/x-tg4 .tga application/x-tga.tif image/tiff .tif application/x-tif.tiff image/tiff .tld text/xml.top drawing/x-top .torrent application/x-bittorrent.tsd text/xml .txt text/plain.uin application/x-icq .uls text/iuls.vcf text/x-vcard .vda application/x-vda.vdx application/vnd.visio .vml text/xml.vpg application/x-vpeg005 .vsd application/vnd.visio.vsd application/x-vsd .vss application/vnd.visio.vst application/vnd.visio .vst application/x-vst.vsw application/vnd.visio .vsx application/vnd.visio.vtx application/vnd.visio .vxml text/xml.wav audio/wav .wax audio/x-ms-wax.wb1 application/x-wb1 .wb2 application/x-wb2.wb3 application/x-wb3 .wbmp image/vnd.wap.wbmp.wiz application/msword .wk3 application/x-wk3.wk4 application/x-wk4 .wkq application/x-wkq.wks application/x-wks .wm video/x-ms-wm.wma audio/x-ms-wma .wmd application/x-ms-wmd.wmf application/x-wmf .wml text/vnd.wap.wml.wmv video/x-ms-wmv .wmx video/x-ms-wmx.wmz application/x-ms-wmz .wp6 application/x-wp6.wpd application/x-wpd .wpg application/x-wpg.wpl application/vnd.ms-wpl .wq1 application/x-wq1.wr1 application/x-wr1 .wri application/x-wri.wrk application/x-wrk .ws application/x-ws.ws2 application/x-ws .wsc text/scriptlet.wsdl text/xml .wvx video/x-ms-wvx.xdp application/vnd.adobe.xdp .xdr text/xml.xfd application/vnd.adobe.xfd .xfdf application/vnd.adobe.xfdf.xhtml text/html .xls application/vnd.ms-excel.xls application/x-xls .xlw application/x-xlw.xml text/xml .xpl audio/scpls.xq text/xml .xql text/xml.xquery text/xml .xsd text/xml.xsl text/xml .xslt text/xml.xwd application/x-xwd .x_b application/x-x_b.sis application/vnd.symbian.install .sisx application/vnd.symbian.install.x_t application/x-x_t .ipa application/vnd.iphone.apk application/vnd.android.package-archive .xap application

java中setX和getX都什么意思?有什么作用?怎样使用呢?

第一你可以参考升管生产厂家,第二你可以参考一下相关的使用价值。

javascript中_proto_和__proto__的区别?左边是一条下划线,右边是两条下划线

这仅仅表示是两个不同的变量名而已,与下划线没什么必然的关系。下划线在这里就是变量名的一个组成部分而已,可以换成其他任意的字母或数字(但开头第一个下划线只能换成字母不能是数字),用下划线仅仅是程序设计者的个人爱好而已。你如果想偷懒,你甚至可以直接用a和b来分别作为两个变量名的。

java中.proto文件怎么用

用cd命令打开文件所在目录,例如文件在E: oolsComputerprotoc-2.5.0-win32下cmd命令:e:E:>cd tools

java web strurs.xml配置中Attribute "class" must be declared for element type "action"。。。

试试用Struts2的另一版本

java中的接口作用?

物以类聚

java:servlet接收图片,并把它保存到数据库中

不要那么做费时费力啊,图片直接上传到一个目录下,然后只要知道路径就能加载了,数据库保存个路径就好了,其它的都可以得到了

Java类的定义

class a{private l int ; //长private w int ; //宽public int getValue(int l,int w){ return l*w; //计算其面积}}……晕不想写来。这个是作业题。帮你写了 太不道德了,

JAVA中类名不是抽象的,并且未覆盖抽象方法 急急急,求解!!

仔细观察一下,就会发现方法名字不同

如何搭建selenium与java环境

1、安装、配置JDK1.6配置JAVA_HOME右击我的电脑-->属性-->高级系统设置-->高级-->环境变量 在Path中增加%JAVA_HOME%in; 2、Java IDE中引用selenium-java-2.40.0.jar,selenium-server-standalone-2.40.0.jar 项目目录右键-->Build Path--> config build path-->Java BuildPath-->Libraries-->Add External JARs,添加selenium-java-2.40.0.jar,selenium-server-standalone-2.40.0.jar 3、拷贝chromedriver.exe到system32目录,安装chrome浏览器 4、测试环境是否搭建成功 <pre t="code" l="java">import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class test1 { public static void main(String[] args) throws InterruptedException { WebDriver dr = new ChromeDriver(); dr.get("); //打开首页 dr.manage().window().maximize(); //最大化 Thread.sleep(3000); dr.quit(); } }

如何搭建selenium+java环境搭建

http://www.cnblogs.com/xuebi/p/5774822.html

java怎么安装selenium

为了开发Selenium RC或webdriver脚本,用户必须确保他们有初始配置完成。有很多关联建立环境的步骤。这里将通过详细的讲解。下载并安装Java下载并配置Eclipse配置Firebug和FirePath配置Selenium RC配置Selenium的webdriver

求各位大神解答下eclipse java neon怎么用

这个版本似乎好像支持最低版本JDK1.8,你看看吧。

eclipse java neon和jee neon有什么区别?

eclipse java neon和jee neon的区别是:本质没什么不同,同一个版本的eclipse,集成了不同的插件,开发环境有针对性的不同,eclipse java neon 开发普通java应用,也可以添加其它插件jee neon是集成了web开发插件。eclipse-jee-neon-3指定使用jdk1.8的原因是:因为java向下兼容,使用java8也并不影响你的工作,你可以指定java8采用7或者更低版本的方式进行编译,然后eclipse是基于jre运行的,为了支持java8的开发,肯定会采用新的编译器进行编译,就导致java7的JRE无法运行高版本编译的eclipse的class文件,所以就只能指定更高版本的jdk。

javascript怎么跳转页面

window.location.href =

navigate在java中是什么意思?

没意思

执行命令,让javac对java代码进行编译成class文件时,总是出现错误??什么原因呢?

你的路径有问题啊你要cd接着javac hellotianhui.java再java hellotianhui

编译java文件时出现:“javac不是内部或外部命令也不是可运行的程序或批处理文件”,如何处理?

如果java命令可以用,那么javac命令应该也可以用。出现你这种情况的原因有二:(1)已经正确安装JDK,但没有重新打开控制台,导致javac命令不能用。解决方法:关闭原有控制台,重新打开控制台,输入javac测试。(2)已经正确安装JDK,但没有设置path环境变量,导致javac命令不可用。解决方法:设置环境变量,将类似“C:Program FilesJavajdk1.6.0_17in”的值添加到path环境变量中。重新打开控制台,输入javac测试。 至于“java -version”显示安装成功,这并不能说明什么。java是跨平台的语言,在Windows、Linux等多种操作系统平台上都预装有java的运行环境JRE,在它的bin目录下就有java命令(用于运行Java程序),但没有javac命令(用于编译Java程序)。也就是说,即使你不安装JDK,一样可以使用java命令,但不能直接使用javac,除非安装jdk,并设置path环境变量。

java可以运行javac不能运行怎么回事

Classpath=.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar这个地方最后面 你没有写分号 正确的为:Classpath=.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;不写分号容易出 什么找不到main的错误 如果javac不是内部命令,恭喜你,重新安装JDK 并且重新配置环境变量吧。我以前也遇到过一次。不信你去JDK路径看看 根本没有javac.exe这个东西

javac.exe与javacpl.exe

那是因为你只装了jre,但没有装jdk,也就是只有java运行时环境,但没有编译java的工具。如果要使用javac编译java文件的话,请按装完整的jdk。

为什么我下载后机子上有JAVA但没有JAVAC?

不会吧 1.4可以啊编译生成.class文件一定要javac啊可能有这种情况 1.看看你的环境变量,确定正确... 2.看你的jdk下的bin的jaavac的exe文件是否存在, 比如我的是Javajdk1.6.0_03in这个文件夹看看这个文件夹没有javac.exe的文件,没有的话, 那么可能是你删除了(也许你不知道或者忘记了) 建议你到sun的官网www.sun.com下载最新的jdk,现在都1.6的了.. ..还是用最新的吧.. 希望对你有帮助..

菜鸟问题: jdk, jar, javaw, javac, javah分别是什么??

jdk是java开发工具包,jar是制作好的java包

javac 这是什么问题 啊

打不开这个文件。因为你的文件后缀是cfg配置文件,计算机默认的打开方式解析不了,所以打不开,换一个呗,txt的最好打开了

在命令提示符中,javac的c的英文是什么意思?谢谢

javac应该是Java Compiler(Java编译器)的缩写吧。

安装完jdk后怎么没有javac文件

jdk和jre一定不能安装在同一文件夹中,(jdk自带的那个jre除外)否则运行的时候会找不到javac命令。原因:jre晚于jdk安装,而jre只是提供java运行环境,不需要javac编译命令的。jre安装前你会发现它会自动删除一些无关文件,如果同jdk安装在同一目录下,原本jdk中完好的javac命令就会被删除!!解决方案:重新安装一次jdk你会发现系统会安装两次文件第一次的是jdk第二次的是jre只要保证你两次安装的目录不是同一个就ok

java下的jre和jdk下的jre有什么异同

jdk是安装包

搭建安卓平台,设好环境变量后在cmd输入javac和adb都显示错误

你好!朋友,JAVA的环境变量的java_home要根据安装java的根目录进行设置,具体步骤参考如下:1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.7.0变量名:CLASSPATH 变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;3. 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。 变量名:Path 变量值:%JAVA_HOME%in;%JAVA_HOME%jrein;这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置

Ant 用javac编译时怎样指定jdk的版本

可以使用javac命令javac命令格式及用法如下:用法:javac <选项> <源文件>其中,可能的选项包括:-source <版本> 提供与指定版本的源兼容性-target <版本> 生成特定 VM 版本的类文件 例如:C:>javac -source 1.5 -target 1.5 p100Sum.java这样就把p100Sum.java源文件兼容的编译成1.5版本了<javac fork="true" executable="C:/j2sdk1.4.2_05/bin/javac" source="1.4" memoryInitialSize="512m" memoryMaximumSize="1024m" classpathref="path.id.classpath" srcdir="${src}" destdir="${classes}" debug="true" deprecation="on" optimize="off" />source处填版本号

java可以运行但是在命令行里javac不行是为什么

刚试了,你用管理员的权限,使用dos编辑器(就那个黑框)就好了

javac不是内部或外部命令,也不是可运行的程序或批处理文件

一、首先下载JDK的最新版本。 二、安装好后进行配置。右击“我的电脑”,打开“属性”,选择“高级”里面的“环境变量”。在新打开的界面中系统变量需要设置三个属性。在没安装过JDK的电脑中path属性是本来存在的。 1)在“用户变量”点击“新建”,然后变量名写上"java_home",在变量值写上刚才的安装路径"c:Program FilesJavajdk1.6.0_10"。 2)在系统变量里找到path,点击编辑。path的含义就是系统在任何路径下都可以识别java命令。添加变量值";c:Program FilesJavajdk1.6.0_10in;c:Program FilesJavajdk1.6.0_10jrein"。(注:红色部分根据自己的安装地址;最前面的封号不能少) 3)系统变量中点击“新建”,然后变量名写上"classpath",该变量的含义为java加载类(bin or lib)的路径,只有类在classpath中,java命令才能识别。其值为“C:Program FilesJavajdk1.6.0_10libdt.jar;C:Program FilesJavajdk1.6.0_10lib ools.jar"(注:红色部分根据自己的安装地址)。 三、验证是否安装成功。点击“开始”->“运行”,输入"cmd",进入命令行界面,打入"java -version",如果安装成功,则系统显示 java version "1.6.0_10".....(不同版本号则不同)

为什么我的java可以运行,javac不能运行

需要定义的是系统环境变量,不是用户变量,你的是吗?

编译JAVA程序成功但运行javac命令时出现错误

什么错误呢?

如何用javac 和java 编译运行整个Java工程

你不用去关心它后面做了些什么,执行了哪些命令,基于什么原理。然而也是这种过分的依赖往往让人散失了最基本的技能,当到了一个没有IDE的地方,你便觉得无从下手,给你个代码都不知道怎么去跑。好比给你瓶水,你不知道怎么打开去喝,然后活活给渴死。   之前用惯了Myeclipse, Java文件编译运行的命令基本忘得一干二净。现在项目出了原型,放到服务器上去测试   一、javac命令javac 用于编译Java文件,格式为:java [options] [sourcefiles] [@files]其中:options:命令行选项;sourcefiles:一个或多个要编译的源文件;@files:一个或多个对源文件进行列表的文件,有时候要编译的文件很多,一个个敲命令会显得很长,也不方便修改,可以把要编译的源文件列在文件中,在文件名前加@,这样就可以对多个文件进行编译,对编译一个工程很有用,方便,省事。   有几个比较重要的选项:-d 用于指定编译成的class文件的存放位置,缺省情况下不指定class文件的存放目录,编译的class文件将和源文件在同一目录下;-classpath 可以简写成-cp,用于搜索编译所需的class文件,指出编译所用到的class文件的位置,如jar、zip或者其他包含class文件的目录,指定该选项会覆盖CLASSPATH的设定;-sourcepath用于搜索编译所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目录;需要注意windows下和linux下文件路径分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的区别:windows下文件路径分隔符用 ,文件列表分隔符用分号 ;linux下文件路径分隔符用 / ,文件列表分隔符用冒号 :二、java命令java 用于执行程序,格式如下:java [options] classfile options:命令行选项,一般用于 -classpath 指定要执行的文件所在的位置以及需要用到的类路径,包括jar、zip和class文件目录,会覆盖CLASSPATH的设定三、脚本如果要敲的命令很长,每次要编译运行的时候都要重新敲一遍,这是一件很痛苦的事情,所以用脚本可以大大方便你的工作量。在linux下用shell脚本,windows下用bat批处理程序。因为是在linux下,我这里只是简单介绍一下shell,关于bat批处理程序的语法自己百度一下,不难。   1. 开头linux有很多不同的shell,通常使用bash(bourne again shell),程序必须以下面的行开始:#!/bin/sh #!用来告诉系统用后面的参数来执行程序,这里使用的是/bin/sh要使你的脚本能够执行,还必须让这个文件有可执行权限,使用下面命令更改文件权限:chmod +x filename 2. 注释以#开始的句子表示注释,一直到这行结束,多写注释有利于以后重新看的时候知道自己在做什么3. 变量shell的脚本的变量都是字符串,不用申明类型,定义的时候直接 变量=值 即可,用到变量的的时候用 $变量 或者 ${变量},echo命令用于打印,举个例子:#!

javac命令无效,该如何解决?

环境变量系统变量classpath .;C:Program FilesJavajdk1.6.0_11libdt.jar;C:Program FilesJavajdk1.6.0_11lib ools.jarpath C:Program FilesJavajdk1.6.0_11in;c:windowssystem32;

mysql中的longtext字段在Java的po类中定义成啥类型?还有tinyint

楼上正解。

在CMD中键入javac显示 javac不是内部或者外部命令,但是键入java却显示正常

把JDK卸载后重新装一个吧!我用1.6时 也遇到过这个情况,重新下载个JDK吧

javac: 找不到文件: HelloWorld.java 用法: javac -help 用于列出可能的选项

这肯定是你文件路径不对,才找不到啊

运行javac时,出现不是内部或外部命令,也不是可运行的程序或批处理文件.

在bin目录下没看到javac.exe就肯定没安装好javadoc不会影响编译运行,它只是java的官方帮助文档(有各种包,类,方法...的详细说明)安装成功后还必须设置环境变量,否则依然会出现“运行javac时,出现不是内部或外部命令,也不是可运行的程序或批处理文件. ”的情况

java变量设置

1、首先确定你已经安装好了jdk。2、首先右键【此电脑】。3、选择【高级系统设置】4、点击【环境变量】5、在【环境变量】中的【系统变量】选择【新建】6、变量名:JAVA_HOME。变量值:C:Edevelopmentjava1.8.0_162(这个路径就是你的java安装的目录)7、找到变量名为【path】的选择【编辑】8、在【编辑环境变量】中选择【新建】填写:【%JAVA_HOME%in】选择【确定】9、现在我们快捷键打开【运行】win键+R输入cmd打开命令行10、输入:javac回车恭喜,你的环境变量配置成功

javac后面的 options指什么?

没听明白你问的问题

java环境配置成功javac不能执行

报什么错啊?详细一点

计算机,编程,java,为啥仍然提示javac不是内部外部命令?

JAVA_HOME路径要到bin里面吧

java环境变量配置完了javac为什么不对呢

输入path 看看你配置的jre路径和jdk路径有没有问题 如果有问题就是你配置错了。重新配置一下就好了 这个不影响开发的。

java运行显示“找不到或无法加载主类”

java有类路径(class path)的概念,你上网查查学习下先,就明白了。

javac -d怎么用?最好举个例子。

先写一个测试类 保存为 TestJavac.javapublic class TestJavac { public static void main(String[] args) { System.out.println("run"); }}进入DOS,用CD进入TestJavac.java文件所在的目录下使用默认方式编译javac TestJavac.java使用默认方式执行java TestJavac使用-d的方式编译,编译后的class将会存放到d: emp下。注意:目录必须已存在,否则抛错 (系统找不到指定的路径。)javac -d d: emp TestJavac.java使用-cp的方式执行java -cp d: emp TestJavac为类加入 package com; 后保存使用-d的方式编译,参数用 . ,这样就可以在当前目录下生成com目录javac -d . TestJavac.java使用默认方式执行,加入类的包目录java com.TestJavac

为什么java可以用但是javac不能用

应该是环境变量没有设置好

求助,java新手一枚,在cmd里输入javac后无反应,怎么回事?

你去看看你文件夹里面有没有生成.class文件。另外提醒你,java文件存放点不要涉及到中文空格中文标点符号这些。

jdk安装后输入javac无法运行怎么办

如果jdk安装好之后,在cmd中输入java -version和java都成功,唯独javac报错,可能你配的path变量中有“”导致的,如果你的配置是从网上直接考的话就会有这个问题,在Windows10系统中你要吧path中配置的jdk路径移到最上面才能看的出来,我配置的时候就发现了这个问题。

为什么在命令提示符窗口里输入“Java”有反应而“javac”无反应?

你的环境变量即path没设置好,系统变量加一个 JAVA_HOME 值为你的安装目录,在PATH前加一个 %JAVA_HOME%BIN;

tinyint对应java什么类型

如果长度是1,tinyint(1)对应的是Boolean型,其他的长度应该是Integer

tinyint对应java什么类型

1.LONGTEXT java.lang.String 2.TINYINT java.lang.Boolean,如果将配置属性“tinyInt1isBit”设为“真”(默认值),并将存储大小设为“1”;或java.lang.Integer,如果不是的话。

javac命令和java命令分别有什么作用

一个对Java代码进行编译一个执行Java主类

JDK安装成功了,为什么输入javac后显示不是内部或外部命令

环境变量 配置不正确

javac 不是内部或外部命令,也不是可运行的程序或批处理文件

如果java命令可以用,那么javac命令应该也可以用。出现你这种情况的原因有二:(1)已经正确安装JDK,但没有重新打开控制台,导致javac命令不能用。解决方法:关闭原有控制台,重新打开控制台,输入javac测试。(2)已经正确安装JDK,但没有设置path环境变量,导致javac命令不可用。解决方法:设置环境变量,将类似“C:Program FilesJavajdk1.6.0_17in”的值添加到path环境变量中。重新打开控制台,输入javac测试。至于“java -version”显示安装成功,这并不能说明什么。java是跨平台的语言,在Windows、Linux等多种操作系统平台上都预装有java的运行环境JRE,在它的bin目录下就有java命令(用于运行Java程序),但没有javac命令(用于编译Java程序)。也就是说,即使你不安装JDK,一样可以使用java命令,但不能直接使用javac,除非安装jdk,并设置path环境变量。

javac.exe和java.exe运行了java程序中的哪两个程序

java不懂呀,上CSDN论坛吧,那里牛人多

javac无法运行怎么办

java可以运行,只能说明JRE环境变量配置正确;javac不能运行,说明JDK环境变量配置错误。所以还是环境变量没有设置正确我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置,分别设置如下三个环境变量:设置JAVA_HOME:一是为了方便引用,比如,JDK安装在C:jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!三则是第三方软件会引用约定好的JAVA_HOME变量, 不然, 你不能正常使用该软件.在系统环境变量那一栏中点->新建JAVA_HOME (JAVA_HOME指向的是JDK的安装路径)变量名: JAVA_HOME变量值: C:jdk1.6.0 (1)设置好path变量,使得我们能够在系统中的任何地方运行java应用程序,比如javac、java、javah等等,这就要找到我们安装JDK的目录,假设我们的JDK安装在C:jdk1.6.0目录下,那么在C: jdk1.6.0in目录下就是我们常用的java应用程序,我们就需要把C:jdk1.6.0in这个目录加到path环境变量里面。在系统变量里找到path变量,选择->编辑;(里面已经有很多的变量值,是在变量值的最前面加上C:jdk1.6.0in; 如果没有 就新建一个 但是 一般都会有的)变量名: path变量值: C:jdk1.6.0in;或 %JAVA_HOME%in;(2)classpath环境变量,是当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们提供了一些额外的丰富的类包,一个是d.jar,一个是t***.jar,这两个jar包都位于C:jdk1.6.0lib目录下,所以通常我们都会把这两个jar包加到我们的classpath环境变量中set classpath=.;C:jdk1.6.0lib o**.jar;C:jdk1.6.0****.jar。在系统环境变量那一栏中点->新建classpath变量名: classpath变量值: .;C:jdk1.6.0lib o**.jar;C:jdk1.6.0****.jar;或 .;%JAVA_HOME%lib o**.jar;%JAVA_HOME%l***.jar;(注意,CLASSPATH 中最前面是有个 “.”的,表示当前目录,这样当我们运行java AClass的时候,系统就会先在当前目录寻找AClass文件了。)

请详细写出Javac和Java两个命令的使用方式

一般用javac xxx.java编译,java xxx执行。。。下面是javac -help和java -help的结果,平常可以多看看help:用法:javac <选项> <源文件>其中,可能的选项包括: -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告 -verbose 输出有关编译器正在执行的操作的消息 -deprecation 输出使用已过时的 API 的源位置 -classpath <路径> 指定查找用户类文件和注释处理程序的位置 -cp <路径> 指定查找用户类文件和注释处理程序的位置 -sourcepath <路径> 指定查找输入源文件的位置 -bootclasspath <路径> 覆盖引导类文件的位置 -extdirs <目录> 覆盖安装的扩展目录的位置 -endorseddirs <目录> 覆盖签名的标准路径的位置 -proc:{none,only} 控制是否执行注释处理和/或编译。 -processor <class1>[,<class2>,<class3>...]要运行的注释处理程序的名称;绕过的搜索进程 -processorpath <路径> 指定查找注释处理程序的位置 -d <目录> 指定存放生成的类文件的位置 -s <目录> 指定存放生成的源文件的位置 -implicit:{none,class} 指定是否为隐式引用文件生成类文件 -encoding <编码> 指定源文件使用的字符编码 -source <版本> 提供与指定版本的源兼容性 -target <版本> 生成特定 VM 版本的类文件 -version 版本信息 -help 输出标准选项的提要 -Akey[=value] 传递给注释处理程序的选项 -X 输出非标准选项的提要 -J<标志> 直接将 <标志> 传递给运行时系统Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file)where options include: -client to select the "client" VM -server to select the "server" VM -hotspot is a synonym for the "client" VM [deprecated] The default VM is client.-cp <class search path of directories and zip/jar files> -classpath <class search path of directories and zip/jar files> A ; separated list of directories, JAR archives, and ZIP archives to search for class files. -D<name>=<value> set a system property -verbose[:class|gc|jni] enable verbose output -version print product version and exit -version:<value> require the specified version to run -showversion print product version and continue -jre-restrict-search | -jre-no-restrict-search include/exclude user private JREs in the version search -? -help print this help message -X print help on non-standard options -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] enable assertions -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] disable assertions -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions -agentlib:<libname>[=<options>] load native agent library <libname>, e.g. -agentlib:hprof see also, -agentlib:jdwp=help and -agentlib:hprof=help -agentpath:<pathname>[=<options>] load native agent library by full pathname -javaagent:<jarpath>[=<options>] load Java programming language agent, see java.lang.instrument-splash:<imagepath> show splash screen with specified image

JDK环境变量配置,能用cmd运行java,但是输入javac后,提示不是外部或内部命令,也不是可运行的程序。

path后面只要输入;%jAVA_HOME%in即可

编译java文件时出现:“javac不是内部或外部命令也不是可运行的程序或批处理文件”,如何处理?

如果java命令可以用,那么javac命令应该也可以用。x0dx0a出现你这种情况的原因有二:x0dx0a(1)已经正确安装JDK,但没有重新打开控制台,导致javac命令不能用。x0dx0a解决方法:关闭原有控制台,重新打开控制台,输入javac测试。x0dx0ax0dx0a(2)已经正确安装JDK,但没有设置path环境变量,导致javac命令不可用。x0dx0a解决方法:设置环境变量,将类似“C:Program FilesJavajdk1.6.0_17in”的值添加到path环境变量中。重新打开控制台,输入javac测试。x0dx0ax0dx0a 至于“java -version”显示安装成功,这并不能说明什么。java是跨平台的语言,在Windows、Linux等多种操作系统平台上都预装有java的运行环境JRE,在它的bin目录下就有java命令(用于运行Java程序),但没有javac命令(用于编译Java程序)。也就是说,即使你不安装JDK,一样可以使用java命令,但不能直接使用javac,除非安装jdk,并设置path环境变量。
 1 2 3 4 5 6  下一页  尾页