标签(空格分隔): Javajavascript

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

实验环境介绍

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

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

小提示:包名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

1

案例二

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

1

1

使用相对路径

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

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

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

案例一

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

1

1

案例二

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

1

1

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

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

案例一

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

1

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

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

1

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

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

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

1

1

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

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

1

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

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

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

1

2

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

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

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

1

1

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

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

总结

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

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

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

  1. 运行java提示找不到符号_运行java代码时出现找不到符号错误怎么解决

    运行java代码时出现找不到符号错误怎么解决 发布时间:2020-06-23 11:37:00 来源:亿速云 阅读:113 作者:Leah 运行java代码时出现找不到符号错误怎么解决?针对这个问题, ...

  2. java 找不到字体_从Java中的TTF文件加载一些TrueType字体会导致FontFormatException:找不到字体名称...

    我试图从我的系统上的TTF文件创建一个 java.awt.Font实例,但只有一些字体能够加载而不会出错.下面的代码是我在网上找到的一些测试代码.在我的系统上运行时,它能够成功加载285种字体(例如A ...

  3. Java按包编译jar_java用命令行编译运行时带有包和使用外部jar包的情况

    命令行编译运行Java程序时,加载指定目录中的Jar包: 解决方案一: 编译:javac -Djava.ext.dirs=./lib Test.java  或 javac -Djava.ext.dir ...

  4. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...

    出版说明 前言 第1章 概述 1.1 Java语言的发展历史 1.2 Java语言的特点 1.3 Java虚拟机 1.4 Java的应用 1.5 Java开发环境的建立 1.6 编辑.编译和运行Jav ...

  5. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  6. java基础不好框架能学会吗_转行Java能学会吗?零基础学习Java的学习路线

    Java的跨平台性.通用性.安全性.高效性决定了这门语言在未来10年都会是最热门的语言之一.Java技术的安全性和平台移植性足够让他应用到不同的领域,它的工作需求足够大,现实一点来说即使Java濒临o ...

  7. java传统的项目有哪些内容_请问java全套内容都有什么呢?

    我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...

  8. java技术文章在哪里看呢_谈论Java技术似乎无处不在,但究竟是什么呢?文章末尾有福利...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 谈论Java技术似乎无处不在,但究竟是什么呢? 下面的部分将解释Java技术如何既是一种编程语言,又是一种平台,并概述这种技术可以为您做些什么. Java ...

  9. java怎么把毫秒转换成天数_关于java:如何将毫秒转换为“ hh:mm:ss”格式?

    我糊涂了. 绊倒这个线程后,我试图找出如何格式化具有hh:mm:ss格式的倒数计时器. 这是我的尝试- //hh:mm:ss String.format("%02d:%02d:%02d&qu ...

最新文章

  1. 丹妮在使用计算机计算,美国工程院院士丹妮拉•鲁斯:每个人都有自己的机器人...
  2. 在阿里做博士后是一种怎样的体验?
  3. RC电路输出波形的时域与频域分析
  4. centos 7新机使用前操作
  5. 【Python基础入门系列】第05天:Python函数
  6. Swift与OC混编过程中的配置
  7. 拒绝礼仪与技巧(转)
  8. cmd52命令发送 mmc_乾坤合一~Linux SD/MMC/SDIO驱动分析
  9. Mycat跨库join实现方式总结
  10. matlab质心定位算法,一种改进的质心定位算法
  11. ASME Y14.5 2018重要更新
  12. 在安装office2003时,出现安装程序包的语言不受系统支持的错误,如何解决?
  13. 【SQL Server】已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行 问题解决
  14. Jess 7.2p2——Java平台规则引擎官方文档翻译2
  15. 不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册
  16. 【WEB安全】PHP靶场实战分析——DVWA
  17. iPad刷机的简洁教程(忘记密码怎么办?)
  18. 机器学习画图工具(1)
  19. 新工必看:工作对于你意味着什么
  20. python按键按下改变数值_【发那科】发那科机器人TP 示教器按键使用简介

热门文章

  1. 并发不是并行,它更好!
  2. 深入剖析C++中的string类
  3. 15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)
  4. Apache RocketMQ:简单消息示例
  5. Django权限系统auth模块详解
  6. Linux操作系统load average过高,kworker占用较多cpu
  7. 记账本开发小计(四)
  8. python读xml文件
  9. Java线程状态Jstack线程状态BLOCKED/TIMED_WAITING/WAITING解释
  10. 说一下自己对于 Linux 哲学的理解