新手请教:关于路径的问题

问题描述

测试代码为:d:abchello.javaJDK的环境变量都已经配置好了,在cmd的窗口下输入:javacd:abchello.java可以编译成功,生成hello.class但是,输入javad:abchello却运行不了,提示Exceptioninthread"main"java.lang.NoClassDefFoundError:。。。。。。后来,我在CMD窗口中更改当前目录为d:abc后,输入javahello就可以运行,为啥?

解决方案

解决方案二:
在环境变量里加上classpath=d:abc;如果原来有classpath就在值最前面加上d:abc;...(原来内容)...不用在CMD窗口中更改当前目录为d:abc就可以javahello
解决方案三:
如果hello.java里边是有package的话,编译的时候还需要使用javac-d.这样的参数来自动生成包路径
解决方案四:
Java需要类路径classpath。Java的包名是个名字空间,里面是相对目录,当以D:abc为根时,如果你的类名是test.main.Hello,那么相对路径是test/main。根是file://D:/abc/如果我们把这个打包成D:a.jar,相对路径还是test/main,根是jar:file://D:/a.jar!/把文件放到网络服务器上构成分布式服务并自动从某个特定的位置的配置中读取classpath,得到classpath路径后,它的根可能是jar:http://localhost/a.jar!/java在内部使用newURLClassLoader(newURL[]).loadClass(...)方式加载类。它会把包名替换成子目录结构搜索Hello.class.按上面三种情况,我们的URL分别是file://D:/abc/test/main/Hello.classjar:file://D:/a.jar!/test/main/Hello.classjar:http://localhost/a.jar!/test/main/Hello.class对于依赖网络应用生存的java设计时对网络的考虑比传统程序更多,你如果想象一下要运行一个Windows程序是不是要事物下载dll到本地目录来运行呢?Java设计时是不用先写到磁盘临时文件,直接在网络中读取立即加载都行,而且这些URL具体怎么拿到内容也是独立于ClassLoader这个类的,它是由这个URL协议对应的实现类的URLStreamHandler去做的,职能分离了给不同的类去实现。打包时就以不同的第三方api发布都行。当我们指定了一大批各种各样的classpath时,就想象有一片森林,有多树根,java按包类替换成子目录的规则在整个树中查找一个类的class文件。这里的相对路径对于各种操作系统来说,JRE提供的基础API负责解释怎么对应到具体操作系统的文件系统目录或jar路径或http路径等。让我们的应用程序独立出来,这样更适合跨平台。如果你写个程序都必须很小心在编译时是写成C:/a.txt还是/home/userA/a.txt再编译还是写成别的,这很麻烦。统一写成一个URL的形式则很简单,至少我们要把这个跟操作系统相关的东西拿到真正要运行的时候从命令行输入而不是编译到代码中去。这样才可能“编译一次,到处运行”。
解决方案五:
在环境变量里加上classpath=d:abc;如果原来有classpath就在值最前面加上d:abc;...(原来内容)...
解决方案六:
是不是添加了package了的啊?
解决方案七:
纯属路过,打扰了

时间: 2024-09-13 05:53:20

新手请教:关于路径的问题的相关文章

新手请教虚拟路径

问题描述 我之前新建了个虚拟路径,可以打开程序...由于需要,我将虚拟路径所指的位置更改,并将程序转移至该路径...结果总是提示无法打开程序,路经不一致.是怎么回事?后来我重装IIS.结果再次用.net2003打开的时候要我选择文件地址,我便把选择了新的路径..虽然程序能够打开了,但是用.net直接编译运行,地址栏的地址和我配置的路径不一样,会有自动生成的字符串戴上...怎么解决.怎样将原先设置好的虚拟路径转到其它地方?? 解决方案 解决方案二:2003配置比较麻烦,不过我找到一个方法,你也可以

vs2010-c#,datagridview新手请教,谢谢

问题描述 c#,datagridview新手请教,谢谢 一个桌面应用程序,没有数据库连接. datagridview里已经有了数据. 我想请假的问题是,我有一个保存按钮.点击按钮. 将datagridview里面的数据保存为word文档.当前程序的所在路径为优先路径,当然也可以选择路径.命名word的名称.谢谢各位. 请勿笑话我这个新手哈.多谢 解决方案 你先安装office2007在vs中添加office的相关引用,这样才满足用vs创建word文档的先决条件,然后再在你的方法中实现,可以百度到

通讯录-新手请教大神们一个问题。

问题描述 新手请教大神们一个问题. 刚学习android,想做一个关于短信的小应用,我想在通讯录获得联系人,但是不是获得一个联系人,也不是全部的,就想调用那个短信群发的时候会跳转到的可以多选联系人界面上,如果是普通的通讯录我会调用: Intent intent = new Intent(Intent.ACTION_PICK ContactsContract.Contacts.CONTENT_URI); 但是调用那个多选联系人的通讯录界面我就不会了.百度也没找到有关的资料,所以请教一下各位大神!谢

c语言-C 新手请教下面的代码哪里错了?

问题描述 C 新手请教下面的代码哪里错了? e:cato3-1.cpp(1) : error C2628: 'SqStack' followed by 'void' is illegal (did you forget a ';'?) void InitStack(SqStack &S) { if(!(S.base=(SElemType )malloc(STACK_INIT_SIZE*sizeof(SElemType)))) exit(OVERFLOW); S.top=S.base; S.sta

新手请教一个c的问题,关于指针赋初始值

问题描述 新手请教一个c的问题,关于指针赋初始值 #includeint main(){ char *p=NULL; scanf(""%s""p); printf(""%s""p); return 0;}这段代码我在ios的终端下运行就提示Segmentation fault:11但是不给p赋初值的话..改称char *p;反而好使了..为什么...请教别人说是编译器的问题.能不能稍微详细的说一下为什么.. 解决方案 要先弄清

ajax-php全局变量修改问题(新手请教)

问题描述 php全局变量修改问题(新手请教) 用户登录后,将用户信息存放到php的全局变量global $user中, 编辑用户,修改用户的名字,点击保存,用户名成功保存到数据库中,但是页面中显示的用户名却没有变, 我想问下ajax回调函数如何能够修改php的超全局变量的值? 解决方案 分享一个jquery ajax 中不能修改全局变量问题的方法 解决方案二: 成功保存到数据库中你更新下变量值,下次刷新页面就会变 如果是ajax无刷提交的,用js更改页面用户名容器的innerHTML <span

新手请教个asp.net下的问题,为什么会出错?

问题描述 新手请教个asp.net下的问题,为什么会出错? 请问这个错误怎么解决啊? 解决方案 WH这个类缺少无参构造函数或者它是一个抽象类. 解决方案二: 没有用using导入相应的命名空间

tomcat 延时-新手请教,tomcat的延时设置

问题描述 新手请教,tomcat的延时设置 Windows系统中,用tomcat作为资源服务器,能否做到如下两点: 1.向tomcat发送http资源请求(http://ip:port/1.mp3之类的资源地址),tomcat能否延时一定时间(例如10s)然后再向客户端发送资源文件 2.能否限制单位时间内(1s)发送的资源大小.例如收到客户端请求(http://ip:port/1.mp3之类的资源地址)之后,每秒只向客户端发送1kb大小的文件数据流 以tomcat作为服务器能否做到如下两点?如果

java web-Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式)

问题描述 Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式) 比如我导入第三方jar包, 我在JSP页面用了这个包,eclipse编译倒是通过.但浏览器弹出来就显示XXX cannot be resolved to a type. 我是这样导入的:右击项目,Build Path-->Libraries-->Add External JARS,还有我把该jar包也放在项目中的WEB-INF的Lib文件下了,还是没用. 凡是用到第三方包,eclipse编译都通过,浏览器

java-Java新手请教各位谢谢了

问题描述 Java新手请教各位谢谢了 这段代码我想通过if的条件,讲datalist中某些数据存入showlist中,有没有可能报空指针异常?我已经改成从后面遍历的了 解决方案 Java新手日常练习Java新手必读新手如何学习java 解决方案二: 试试在循环外用 dataList.removeAll(showList); 解决方案三: 已经不会报异常了, 你可以用try catch 捕获起来 解决方案四: dataList.remove(i);这个i是ViList的角标,当Vilist中个数比