linux系统下编译java代码,显示找不到包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统下编译java代码,显示找不到包相关的知识,希望对你有一定的参考价值。

源代码引包的部位是

linux系统下运行这句话。
javac -cp lib/spark-assembly-1.0.0-hadoop2.2.0.jar src/com/cn/wangl/test/javaspark.java
并且4~9行引的所有包都是这个spark-assembly-1.0.0-hadoop2.2.0.jar 文件里的。在Eclipse里面程序并没有报错。
然后在linux下编译的时候报错,说找不到引入包,奇怪的是是,明明4~9行这5个包都是从spark-assembly-1.0.0-hadoop2.2.0.jar 文件里面引用的,可是只是报错报6,7,8,9行找不到那个包有错,而不包括4,5行。好奇怪,要是找不到包不应该都找不到么,为什么有的能找到,有的找不到。
希望了解的人能够给解答一下

参考技术A lib/spark-assembly-1.0.0-hadoop2.2.0.jar:
加个冒号试试追问

可是有两个import是可以的,说明有的类引进去了

追答

那就是找不到的那几个类不在这个包里面。
Eclipse选中一个类按Ctrl+Shift+H能看到这个类在哪个jar文件里面

追问

我从包里查看过,都有,如果不在这个jar包里,Eclipse里面也会报错的

参考技术B 查看你的Path里设置的位置是不是跟Eclipse项目里引入的包是同一位置的包,可能引入不同版本的包,造成的报错。追问

可是我有两个包是引入进去了的,就是第四行,和第五行都没有报错,我决的应该是引入进去了,还有您说的不同版本的包报错是啥意思

追答

Eclipse里右击项目BuildPath里不是有设置项目引入包的选项吗?我担心你现在命令行里的包跟项目里引入的包不是同一个,才会报错的。
你项目里引入的是不是这个包:lib/spark-assembly-1.0.0-hadoop2.2.0.jar

追问

是,我从Eclipse里面拷到linux系统下的

追答

你在执行javac命令的目录下执行以下命令 ls lib/spark-assembly-1.0.0-hadoop2.2.0.jar src/com/cn/wangl/test/javaspark.java

看你在当前目录下能否找到这两个文件,
不行的话,就全部用绝对路径。

再者要检查下一个包够不够,还是有依赖的包,报错信息应该有说是缺失哪个包。

追问

有这俩文件,都在一个包里,难道还能复制丢啦

追答

抱歉,不能帮到您了。

本回答被提问者采纳

linux 极限环境下编译环境的安装

前文:通常情况下在linux系统中安装一个软件包或者是服务有几种方式。

最简单的一种是在可以连接外网的情况下,配置好网络yum源,需要什么包就配置什么yum然后一路yum install 软件包名即可(必要条件:可以连接外网)

其次如果需要的软件包可以在系统的镜像中找到,那么可以配置好本地yum源进行安装也很方便(必要条件:本地镜像,可以不连接外网)

最后一种办法是使用rpm包安装(优点是可以不需要本地镜像,也可以不连接外网,但缺点是一个依赖包会依赖很多个依赖包,安装好之后如果需要一些服务新的功能则必须要安装新的安装包)

背景交代:本次是在现场实际操作使用服务器搭建redis集群。系统版本为:红帽7.2,无法连接外网,但是配置了一个http的服务器yum源。在使用yum源的过程当中发现有一台服务器始终无法正常使用yum源且现场没有系统镜像和编译环境,但是要安装redis集群,使用的要么是编译安装,要么是yum源安装,还未见哪路英雄使用rpm包安装过。几经波折之后,终于想到了以下几种办法并测试成功。

法1:借鸡生蛋 (借其他相同环境具有编译能力的服务器来编译,然后在不具备编译能力的服务器上进行安装),最终完成redis的安装(这种方法不过是权宜之计,不能解决根本问题,只能针对一些编译环境不太复杂的软件安装)

法2:抽丝剥茧,顺腾摸瓜。现在倒推一次。要安装redis,可以使用yum安装(排除:无外网,yum命令无法使用),可以使用编译安装,选择编译安装,就必须要有编译环境(gcc,gcc-c++)。现在的情况是无法使用yum安装gcc,gcc-c++ ,也不具备编译gcc的安装包来安装gcc(无编译环境),幸好大道五十,天衍四十九。万事万物必会留下一线生机,而现在,留给我唯一的生路就只有rpm包安装gcc,gcc-c++了。此法非常人所用,但用此法必定是出于极境之时。所以留下博文,忘后来者以此为鉴。下面是rpm包安装gcc方法:

使用rpm包安装gcc时,最主要的是安装顺序(本次主要针对7.2的系统):

安装时所需要的安装包:

链接:https://pan.baidu.com/s/1Je5aKc2Jny7VtoUKCOHJnQ 密码:lxkf

rpm -ivh glibc-2.17-* nss-softokn-*

rpm -ivh libgcc-4.8.5*

rpm -ivh gmp-6.0*

rpm -ivh mpfr-3.1*

rpm -ivh libmpc-1.0.1*

rpm -ivh cpp-4.8.5*

rpm -ivh kernel-headers-*

rpm -ivh glibc-headers-*

rpm -ivh glibc-devel*

rpm -ivh gcc-4.8.5*

rpm -ivh libstdc++-4.8*

rpm -ivh libstdc++-devel*

rpm -ivh gcc-c++*

 

下面是特殊的查询技巧,适用于linux下所有版本的gcc安装包搜索方法:

要下载的包,包名基本相同,但是针对不同系统版本需要下载不同版本的包,否则一个高版本的包或者低版本的包足以让你找依赖包找到崩溃。那么如何找到对应版本的rpm包呢?下面我有特殊的寻找技巧

1 在安装rpm包是会报错,显示依赖各种库,而这些库分别对应那些包呢,我们可以通过这个网址来查询。

https://centos.pkgs.org

例如:安装一个包时显示要依赖一个库文件libgmp.so.10,我们应该如何去查询对应版本的安装包呢?

首先把依赖的库复制到搜索窗口

 

在查找到包的名字后,到对应的系统版本下下载对应的包即可,系统对应的网址http://vault.centos.org/6.6/os/x86_64/Packages/

点击下载即可,然后一个一个排除依赖,最终完成gcc编译环境安装

 

以上是关于linux系统下编译java代码,显示找不到包的主要内容,如果未能解决你的问题,请参考以下文章

CentOS下编译libev(dev)

我想在ubuntu系统下编译linux内核代码,那我要怎么进行环境的配置,要安装啥呢?

VLC源代码包如何在linux下编译+调试

Linux下编译.c文件时sqlite3找不到库文件如何解决?(undefined reference to `sqlite3_open')

MuPDF怎么在windows环境下编译

Mac系统下编译Android系统源代码