JAVA命令符找不到符号_[转]Java命令行编译文件时出现的错误,找不到符号或软件包不存在等...

标签(空格分隔): Javajavascript

习惯了eclipse的自动编译,Java命令行编译、执行文件只会最基础的部分,就是对单文件的编译和执行,并且不包含任何外部JAR包。但有时候你还非得用命令行,会碰到一些问题,博主这里给出几种常见的问题及解决方法。html

实验环境介绍

7b4e481c5f9248a0b7bcd91f.html

eclipse 的工做目录在D:\myeclipse\Workspaces,里面有咱们的一个工程example,点进去,eclipse为咱们设置好的几个文件.settings、bin、src、.classpath、project,src中存放的是源代码,结构就如上图所示。java

在eclipse导入后显示的结构以下图所示,

7b4e481c5f9248a0b7bcd91f.html

小提示:包名com.example.controller指的是在src/com/example/controller文件夹下有个controller.java文件python

model.java是一个独立的类,不导入任何外部包

controller.java导入了com.example.model.model

view.java导入了com.example.controller.controller和调用了一个外部Jar包linux

在观察案例代码时,须要特别注意此时命令行的当前目录,选项参数和Java文件,会有不一样的结果objective-c

使用绝对路径

绝对路径就是从根目录开始的路径,Windows下就是以盘符开头,如”C:\”,Linux下以斜杠开头/home。sql

使用绝对路径的好处就是无论命令行的当前路径在哪里,都能正确的进行编译windows

案例一

D:\myeclipse\Workspaces\example>javac D:\myeclipse\Workspaces\example\src\com\example\model\*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

案例二

D:\myeclipse\Workspaces\example\src>javac D:\myeclipse\Workspaces\example\src\com\example\model\*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

使用相对路径

相对路径就是相对当前上下文环境,在命令行中就是相对命令行中前面的路径。

相对路径不以/开头,直接文件名。

如案例一,当前路径在D:\myeclipse\Workspaces\example\src,相对这个路径,Java文件的相对路径就为com/example/model/*.java。在案例二中当前路径有变化,相应得Java文件的相对路径也有变化。

案例一

D:\myeclipse\Workspaces\example\src>javac com/example/model/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

案例二

D:\myeclipse\Workspaces\example>javac src/com/example/model/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

基本概念已经理解了,上干货,通常命令行编译出现的问题:

问题一:找不到符号或软件包不存在

案例一

D:\myeclipse\Workspaces\example\src>javac com/example/controller/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

这种状况下能够正常得进行编译,由于你本身不指定classpath,通常系统默认的classpath会在当前路径中搜索。

案例二

D:\myeclipse\Workspaces\example>javac src/com/example/controller/*.java

报错

src\com\example\controller\controller.java:3: 软件包 com.example.model 不存在

1

2

3

4

7b4e481c5f9248a0b7bcd91f.html

1

2

3

4

咱们切换目录,已上文绝对路径、相对路径的知识,正确给出Java文件的路径。这时会报出错误,软件包com.xxx不存在。由于在controller.java文件中有一个import com.example.model.model,根据系统默认的classpath会在当前路径下找,即D:\myeclipse\Workspaces\example,很明显这个路径下没有com文件。

解决方法,咱们告诉编译器哪一个目录下会有就好了,因此须要加入选项-cp xxxx 或 -classpath xxxx

D:\myeclipse\Workspaces\example>javac -cp src src/com/example/controller/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

加上参数-cp src,告诉编译器能够去src中找,就不会有问题了。

一样的,classpath能够是相对路径,也能够是绝对路径,本例中使用的是相对路径,命令行换路径后,全部参数都要换

D:\myeclipse\Workspaces>javac -cp example/src example/src/com/example/controller/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

下面这个是用绝对路径写的,相对路径和绝对路径如下再也不叙述

javac -cp D:\myeclipse\Workspaces\example\src example/src/com/example/controller/*.java

1

7b4e481c5f9248a0b7bcd91f.html

1

问题二:JAR包怎么引入

首先仍是在eclipse调通,建议专门创建一个lib文件,而后把JAR包所有放在这里面,对项目转移也比较方便。

案例一

D:\myeclipse\Workspaces\example\src>javac com/example/view/view.java

错误

com\example\view\view.java:4: 软件包 com.google.gson 不存在

import com.google.gson.Gson;

^

com\example\view\view.java:14: 找不到符号

符号: 类 Gson

位置: 类 com.example.view.view

Gson gson = new Gson();

^

com\example\view\view.java:14: 找不到符号

符号: 类 Gson

位置: 类 com.example.view.view

Gson gson = new Gson();

^

3 错误

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

7b4e481c5f9248a0b7bcd91f.html

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

其实就一个问题,没找到JAR包。引入JAR就是注意要把路径写到JAR包的具体位置。废话少说,给出例子:

案例二

D:\myeclipse\Workspaces\example\src>javac -cp lib/gson-2.3.1.jar com/example/view/view.java

错误

com\example\view\view.java:3: 软件包 com.example.controller 不存在

import com.example.controller.controller;

^

com\example\view\view.java:10: 找不到符号

符号: 类 controller

位置: 类 com.example.view.view

new controller();

^

2 错误

1

2

3

4

5

6

7

8

9

10

11

12

7b4e481c5f9248a0b7bcd91f.html

1

2

3

4

5

6

7

8

9

10

11

12

细心的你会发现,问题变了,由于咱们引入了JAR包,因此由于JAR找不到的GSON问题已经没了,如今的问题就是找不到com.xxxx,就变成问题一。这里解释一下,咱们加入-cp xxxx或-classpath xxxx以后,会覆盖系统中的classpath,案例二这么写的确能够找到GSON类,但在碰到import com.example.model.model时还在lib/gson-2.3.1.jar文件中查固然是找不到了,因此报错。方法很简单,在增长一个com.xxxx文件夹的路径,没错就是当前路径。因此加上.;lib/gson-2.3.1.jar。如今你是否对一开始配置Java环境时候,classpath中的路径要.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar有了理解呢?

特别注意的是在linux下用冒号:进行分隔,而在Windows用分号进行分割。

案例三

正确

D:\myeclipse\Workspaces\example\src>javac -cp .;lib/gson-2.3.1.jar com/example/view/view.java

1

2

7b4e481c5f9248a0b7bcd91f.html

1

2

问题三:指定class文件存放位置

默认的状况下,class文件和java文件存放在一个目录下,但你有没有发现,eclipse编译后会有两个目录,一个是src,存放的是用户编辑的源代码,定一个是bin文件,是编译后的字节码。它是加了-d选项。

D:\myeclipse\Workspaces\example\src>javac -d ../bin com/example/model/model.java

1

7b4e481c5f9248a0b7bcd91f.html

1

这里bin文件和src文件是同级(看实验环境介绍),也是使用的是相对路径。打开文件后能够发如今bin文件中生成了com/example/model/model.class具备层次结构的目录。

到此我相信你已经能基本上解决编译时的问题了。

总结

本文给出了几个常见问题的解决方案,以上代码都通过实验过,不会有问题。命令行中咱们要注意相对路径和绝对路径的差异,已经Linux下和Windows下分隔符的差异(Linux用冒号,Windows下用分号)。另外设置classpath时,通常都加上当前路径.。

以上内容是博主查阅一些资料,并进行了总结,原本还想认真研读一下官方文档的,但由于是全英文,并且很具体,仍是放弃了。之后在碰到问题继续完善好了。若是以上所述有问题,请及时指出,欢迎交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中POST数据和接收的几种方式

POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[""]来获取。 这里介绍另外一种POST方式和接收方式,就是将整个数据作为加…

一卡通vip充值消费线上oracle库服务器故障排查过程

上图是oracle体系总架构图今天突然公司所有终端pos机不能刷卡消费,财务室不能充值,一下很多电话打过来了,第一反应肯定数据库出问题了,登陆到数据库服务器,果然sqlplus连进去后就不断提示要求输入用户名,弹…

数据库学习,树形结构的数据库表Schema设计方案

2019独角兽企业重金招聘Python工程师标准>>> 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各…

Systemd 入门教程之命令篇

Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。 一、由来 历史上,Linux 的启动一直采用init进程。…

GCC生成的汇编代码

假设我们写了一个C代码文件 code.c包含下面代码: int accum 0; int sum(int x, int y) { int t x y; accum t; return t; } 这是用echo命令输入源码的效果,简单的就是最好的:)一、查看GCC生成的汇编代码在命令行…

jQuery高度及位置操作

1. 获取滑轮位置&#xff0c;scrolltop:上下滚动的意思。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><div style"height:100px;width:10…

you have mixed tabs and spaces fix this

http://blog.csdn.net/tonyyan19781/article/details/60882443Vs2013 IDE下&#xff0c;编辑C的工程源码&#xff0c;在打开文件的时候&#xff0c;会出现 “ you have mixed tabs and spaces fix this ”&#xff0c; 然后给出三个选项 Tabify、Untabify、Dont show again。尤…

30天自制操作系统(二)汇编语言学习与Makefile入门

1 介绍文本编辑器这部分可直接略过2 继续开发helloos.nas中核心程序之前的内容和启动区以外的内容先不讲了&#xff0c;因为还涉及到一些软盘方面的知识。然后来讲的是helloos.nas这个文件; hello-os ; TAB4ORG 0x7c00 ; 指明程序的装载地址; 以下这部分记录…

java房产源码_基于jsp的房屋交易管理系统-JavaEE实现房屋交易管理系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的房屋交易管理系统, 该项目可用各类java课程设计大作业中, 房屋交易管理系统的系统架构分为前后台两部分, 最终实现在线上进行房屋交易管理系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类房屋交易管…

Docker 精通之入门

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile 2013年发布至今&#xff0c; Docker 一直广受瞩目&#xff0c;被认为可能会改变软件行业。 但是&#xff0c;许多人并不清楚 Docker 到底是什么&#xff0c;要解决什么问…

bzoj3156 防御准备 - 斜率优化

Input 第一行为一个整数N表示战线的总长度。 第二行N个整数&#xff0c;第i个整数表示在位置i放置守卫塔的花费Ai。 Output 共一个整数&#xff0c;表示最小的战线花费值。 Sample Input 102 3 1 5 4 5 6 3 1 2 Sample Output 18 HINT 1<N<10^6,1<Ai<10^9 这题还是…

Docker 精通之微服务

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile Docker 是一个容器工具&#xff0c;提供虚拟环境。很多人认为&#xff0c;它改变了我们对软件的认识。 站在 Docker 的角度&#xff0c;软件就是容器的组合&#xff1a;业…

php根据浏览器调用支付_Android通过外部浏览器调用微信H5支付,Android+PHP详解

看了好多关于讲解微信H5支付开发的文章&#xff0c;大多数都是通过微信内部浏览器来调用支付接口(其实就是公众号支付)&#xff0c;可能是因为H5支付接口刚开放不久吧。微信官方体验链接&#xff1a;http://wxpay.wxutil.com/mch/pay/h5.v2.php&#xff0c;请在微信外浏览器打开…

秒杀系统架构分析与实战

0 系列目录 秒杀系统架构 秒杀系统架构分析与实战1 秒杀业务分析 正常电子商务流程 &#xff08;1&#xff09;查询商品&#xff1b;&#xff08;2&#xff09;创建订单&#xff1b;&#xff08;3&#xff09;扣减库存&#xff1b;&#xff08;4&#xff09;更新订单&#xff1…

如何提高安卓代码的质量和语法

本文讲的是如何提高安卓代码的质量和语法&#xff0c;在这篇文章中&#xff0c;我会介绍几种不同的方式&#xff0c;让你通过自动化工具提高你的Android代码质量&#xff0c;包括 Checkstyle&#xff0c; Findbugs&#xff0c;PMD&#xff0c; 当然&#xff0c;还有我们最熟悉的…

grep 命令的 12 个实例

2019独角兽企业重金招聘Python工程师标准>>> 你是否遇到过需要在文件中查找一个特定的字符串或者样式&#xff0c;但是不知道从哪儿开始&#xff1f;那么,就请grep来帮你吧。 grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因&#xff0c;…

Linux : shell基础(慕课网Linux达人养成计划课程笔记)

Shell概述 shell是Linux中的命令行解释器&#xff0c;为用户提供了一个向Linux内核发送请求一边运行程序的界面系统级程序&#xff0c;用户可以用shell来启动、挂起、停止甚至编写一些程序。shell还是一个功能相当强大的编程语言&#xff0c;易编写&#xff0c;易调试&#xff…

php图型分析插件,IMAGE缩略图插件

应用信息 名称: IMAGE缩略图插件 售价: (免费) 应用ID: IMAGE 最低要求: Z-BlogPHP 1.5.1 Zero Build 151740版 本: 2 发布日期: 2014-08-27PHP最低版本要求: 5.3 更新日期: 2018-05-21立即购买 加入购物车作者信息 开发者ID: 十五楼的鸟儿 本站用户组: 管理员 联系邮箱: adm…

2017.9.5 postgresql加密函数的使用

需要安装的插件的名字&#xff1a;pgcrypto官网地址&#xff1a;https://www.postgresql.org/docs/9.4/static/pgcrypto.htmlstackoverflow:https://stackoverflow.com/questions/8000740/how-do-i-install-pgcrypto-in-postgresql-9-1-on-windows/46046367#46046367https://st…

php 序列化方法,PHP序列化操作方法分析

本文实例讲述了PHP序列化操作方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;序列化就是将变量数据转换为字符串(跟类型转换机制不同)&#xff0c;一般应用于存储数据(文件)&#xff0c;然后在别的情形下恢复(反序列化)序列化&#xff1a;$val serialize($var);f…