关于JAVA运行的简单问题 我在D:\TEST目录下创建一个helloworld.java在DOS下编译:javac d:\TEST\helloworld.java在运行时用:java d:\TEST\helloworld 为什么不可以呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java -classpath d:\TEST; helloworld 楼主可以查看下javac命令提示,进入cmd直接javac然后回车就行了 一般,JVM会自动查找路径,你在系统的PATH中添加好JAVA路径,然后直接用:javac helloworld.javajava helloworld 就可以了 我在D:\TEST目录下创建一个helloworld.java 在DOS下编译:javac d:\TEST\helloworld.java 编译生成helloworld.class;在运行时用:java d:\TEST\helloworld 为什么不可以呢? java -classpath d:\TEST; helloworld 在JAVA中的路径表示不同而已,不建议指定路径来执行,还是设置环境变量要规范些. 有时候不能java *.class ,命令 java *才可以运行。 看看这个吧,你就知道为什么这么设定了,是为了程序更好的兼容性...这是因为java只会在classpath中找有关java的东西,不会理会path,只有这样才能跨平台...你如果非想那样运行class,那就根据classpath,把它当作包来运行好了。classpath有点类似path,但不完全是。一般我们在一个类中声明包名:如package mypackage.first;import java.io.*;public class myfirst { ....}那么就是把myfirst这个类放进mypackage里的first里面。大家可以把mypackage和first当作目录,但是你不能在mypackage\first里执行java myfirst 。因为这样java会认为你是在找默认目录(即classpath)里找myfirst类,而不是mypackage.first里面的myfirst类。什么意思呢?这是因为java只会在classpath中找有关java的东西,不会理会path。只有这样才能跨平台。classpath中加个.(点)表示当前目录,即在当前目录寻找java的类,不理会其他目录。(注意:java本身的类,如java.io.*;java awt.*;等等会自动包括进去,不用指定)大家也许认为这很麻烦,但这非常有用,如果你要管理你的文件时。比如说我有10个EJB的client,分别对应不同的EJB,那么你可以把这10个client分别放入各自的EJB包中,以免混乱。如:myejb.helloworld.client;myejb.firstEJB.client; 等等。举个例子:classpath=C:\Project;D:\;你在C:\Project里有first,helloworld目录,里面相应有各自的client文件(已编译)。给出first目录的client.java作例:package first;import java.io.*;public class client{public static void main(String args[]){System.out.println("first.client invoked!!");}}编译:在 C:\Project\first> javac *.java那么你就可以在任何DOS目录执行java first.client ,这都会启动这个client,而不会启动helloworld里的,或其他的。如果你在classpath中加了.(点), 如classpath=.;D:\;那么你必须要在C:\Project>里面执行上述语句,因为这表示在D:\和当前目录寻找,否则java会报错 ClassNoFoundException 。这点要注意。 各位帮忙看看是哪出错了。。。。 提取文本内容中的特定内容 迅雷面试 关于Java的IO与Socket问题(没有复杂的代码,只是一个用法的疑问,希望大家赏脸) eclipse 配置tomcat 遇到的问题 关于java线程同步问题,在线等。请高手指教。 想写一个抽奖程序,请问如何实现滚动效果? 如何访问大括号内的变量 还是转换 大家有没有在用 jb 7 ?? actionPerformed 怎么Math类和Commons math里好像都没有微积分计算的功能啊
javac helloworld.java
java helloworld
就可以了
在DOS下编译:javac d:\TEST\helloworld.java
编译生成helloworld.class;
在运行时用:java d:\TEST\helloworld 为什么不可以呢?
一般我们在一个类中声明包名:如
package mypackage.first;
import java.io.*;
public class myfirst { ....}那么就是把myfirst这个类放进mypackage里的first里面。大家可以把mypackage和first当作目录,但是你不能在mypackage\first里执行java myfirst 。因为这样java会认为你是在找默认目录(即classpath)里找myfirst类,而不是mypackage.first里面的myfirst类。什么意思呢?
这是因为java只会在classpath中找有关java的东西,不会理会path。只有这样才能跨平台。
classpath中加个.(点)表示当前目录,即在当前目录寻找java的类,不理会其他目录。
(注意:java本身的类,如java.io.*;java awt.*;等等会自动包括进去,不用指定)大家也许认为这很麻烦,但这非常有用,如果你要管理你的文件时。比如说我有10个EJB的client,分别对应不同的EJB,那么你可以把这10个client分别放入各自的EJB包中,以免混乱。如:
myejb.helloworld.client;
myejb.firstEJB.client; 等等。举个例子:
classpath=C:\Project;D:\;
你在C:\Project里有first,helloworld目录,里面相应有各自的client文件(已编译)。
给出first目录的client.java作例:
package first;
import java.io.*;
public class client
{
public static void main(String args[])
{
System.out.println("first.client invoked!!");
}
}
编译:在 C:\Project\first> javac *.java
那么你就可以在任何DOS目录执行java first.client ,这都会启动这个client,而不会启动helloworld里的,或其他的。如果你在classpath中加了.(点), 如classpath=.;D:\;
那么你必须要在C:\Project>里面执行上述语句,因为这表示在D:\和当前目录寻找,否则java会报错 ClassNoFoundException 。这点要注意。