24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 毕业设计论文 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

java项目毕业设计范例--Linux服务器软件开发的移植

添加时间:2020/05/13 来源:未知 作者:admin
基于一个典型项目实例,详细介绍了在Windows下命令行编译、运行Java项目的步骤以及移植到Linux的变化和注意事项,具有实用性强、适用性广的特点。
以下为本篇论文正文:

  摘要:在Linux服务器软件开发中,Java程序占了很大比例,很多Java项目先在Windows集成环境开发,然后移植到Linux服务器上,由于Linux服务器多以命令行模式安装,所以需要在命令行模式下重新编译和运行Java项目,该文基于一个典型项目实例,详细介绍了在Windows下命令行编译、运行Java项目的步骤以及移植到Linux的变化和注意事项,具有实用性强、适用性广的特点。

  关键词:代码移植; 命令行编译; Java项目; Eclipse; Java包目录;

Abstract

  in the Linux server software development, the Java program accounted for a large proportion, many Java project development in integrated Windows environment first, and then transplanted to the Linux server, because the Linux server installed in command line mode, so you need to in command line mode to compile and run the Java project, this paper is based on a typical project example, introduces in detail under the Windows command line to compile, run Java project steps, and the change of ported to Linux and matters needing attention, has the characteristics of strong practicability and wide applicability.

  Key words: code transplantation; Command line compilation; Java project; The Eclipse; Java package directory;

  目录
  1 Java项目实例 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅1
  1.1 Java项目开发基本过程 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅2
  1.2 Java项目的包 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ 3
  1.3 Java的包目录 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ 4
  2 Windows命令行编译项目 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅5
  2.1 编译com.prj01.fileUtility包┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ 6
  2.2 编译com.prj01.Bll包┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅┅┅┅7
  2.3 编译com.prj01.main和com.prj01.fileUtility包 ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅8
  3 Windows命令行运行程序┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅ ┅ ┅ ┅ ┅ ┅ 8
  3.1 程序的运行目录和主文件 ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅ ┅ ┅ ┅ ┅ ┅ 9
  3.2 参数的使用┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅10
  3.3 运行项目主程序┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅ 11
  4 移植到Linux平台┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅┅ ┅12
  5 其他问题┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ 12
  5.1 项目引用Eclipse插件问题┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅┅13
  5.2 JDK版本一致性问题┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅14
  6 结束语┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅15
  参考文献┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅┅ ┅ ┅17
  附录(略)┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅ ┅  ┅ ┅ ┅ ┅ ┅  17

  很多Java项目的部署、运行环境是Linux服务器,由于多数Linux服务器未安装图形桌面,进行Java项目开发很不方便,所以常用的办法是先在Windows IDE环境下开发,编译运行成功后,再移植到Linux服务器,这就要求项目技术人员掌握移植过程需要的命令语句和参数。本文基于一个Java项目实例,讲述从Windows的Eclipse开发平台移植到Linux的过程,移植的关键在于正确使用编译和运行命令。

  最简单的Java程序只有一个Java原文件,代码中不含有package语句,这样的程序没有实际意义,本文讲述的项目实例含有多个Java原文件并划分成多个包。另外,Windows和Linux系统都要预先安装JDK,JDK的安装和环境配置本文不再阐述。

  1 Java项目实例

  1.1 Java项目开发基本过程

  如图1所示,很多项目先在Windows集成环境下开发成功,然后在Windows的命令行模式下通过编译,最后移植到Linux服务器,本文假定第一步已经在Eclipse中完成。

  1.2 Java项目的包

  Java项目可能含有几十个甚至几百个Java代码文件,为了便于管理,将它们按照功能划分为不同的模块,在Java中称之为包(package),为了详细说明Java编译过程,本文假定一个项目实例:com公司开发了一个Java项目,项目名称为prj01,此项目含有多个Java代码文件,将所有的Java文件按照功能划分为主程序模块、文件操作模块、业务逻辑操作模块和数据库操作模块等,每个模块对应一个包,每个包的命名规则是:公司名。项目名。模块名称,如表1.

  为了简化问题,表中四个包分别含有一个Java文件(实际项目的包一般含有多个文件,后文将阐述:只要使用通配符*,包的文件多少并不影响编译命令),文件之间的调用关系是:myMain.java调用BllClass.java定义的类,BllClass.java调用了fileUtilityClass.java和sqlUtilityClass.java定义的类,同时引用了jars目录下的组件mail.jar和jnotify.jar,运行时还需要lib目录下的动态链接库notify.dll或notify.so(Linux环境下使用),如图2.

  表1 项目的包与包目录

  1.3 Java的包目录

  Java的包相当于软件的功能逻辑模块,它的代码文件存放目录称为包目录,无论使用什么样的开发环境,都需要为每个包创建包目录,例如Eclipse中创建包com.prj01.fileUtility时,Eclipse默认在src下创建包目录com\prj01\fileUtility,包com.prj01.fileUtility的Java文件都放在此目录下。编译Java包其实就是编译它的包目录下的所有Java文件。由于每个包对其它包的引用、关联情况不同,所以编译命令需要的参数不同,本文按照由易到难的顺序依次讲解。

  图1 基本开发过程  

  图2 文件之间的引用关系  

  假定已经使用Eclipse建立了表1所示的各个包和包目录,在Windows命令行提示符下进入src的父目录开始编译。

  2 Windows命令行编译项目

  2.1 编译com.prj01.fileUtility包

  图2表明com.prj01.fileUtility文件工具包和com.prj01.sqlU-tility数据库工具包的代码没有引用其它类和第三方组件jar,编译命令为:javac src\com\prj01\fileUtility\*.java

  此命令编译了包com.prj01.fileUtility的所有Java原文件,通配符*表示编译包目录下的所有Java文件(也可以逐个指定Java文件名,各文件名之间用空格分隔,但是既烦琐也无必要),默认情况下编译生成的字节码文件和Java文件在相同位置。

  为完善编译命令,建议添加以下参数:

  1)使用-encoding解决编码问题:

  Java代码文件的编码可能是UTF-8,也可能是ANSI或GBK格式,为了保证编译正确,项目中所有的Java文件、XML文件和其他类型文本文件应该使用相同编码,本项目统一使用UTF8编码,所以编译命令含有-encoding UTF-8参数,更新的命令是:javac-encoding UTF-8 src\com\prj01\fileUtility\*.java.

  2)使用-d指定字节码文件存储目录:

  参数-d指定编译生成的字节码文件放置的目录,此目录必须已经存在,否则编译报错。例如:参数-d classes表示在classes目录下创建com.prj01.fileUtility包的同构目录,编译器会在classes\com\prj01\fileUtility目录下生成fileUtilityClass.class(参见图3),命令如下。

  2.2 编译com.prj01.Bll包

  2.2.1 指定调用的类文件位置

  上述命令编译com.prj01.fileUtility包成功,但是用来编译com.prj01.Bll包出现错误提示:找不到符号fileUtilityClass……,这是因为com.prj01.Bll作为业务逻辑包,它的BllClass.java调用了com.prj01.fileUtility和com.prj01.sqlUtility的Java类,编译时找不到被调用类导致错误,解决办法是使用-sourcepath参数指定被调用类文件的所在目录,更新后的命令:

  -sourcepath参数值为src,因为所有源代码文件都在src及其子目录下,无论各文件的类调用关系多么复杂,编译器总能找到被调用的类。

  2.2.2 引用扩展jar组件

  由图2所示,com.prj01.Bll包还引用了mail.jar和jnotify.jar扩展组件,这需要在编译命令中指定jar文件位置,有2个参数可以使用:

  1)参数-cp:指定每个jar的具体路径,多个jar之间用分号隔开。

  2)参数-DJava.ext.dirs:指定被引用jar所在目录,多个目录之间使用分号隔开。

  考虑到Java项目可能引用很多jar,所以使用-DJava.ext.dirs更方便。另外,建议在参数-DJava.ext.dirs值中添加"$JA-VA_HOME/jre/lib/ext",这是因为-DJava.ext.dirs默认指向JDK类库$JAVA_HOME/jre/lib/ext,自定义-DJava.ext.dirs的值会覆盖此默认值,使得程序无法使用一些JDK自带类库,所以建议添加这个目录,更新后的命令是:

  此命令能够成功编译com.prj01.Bll包,另外com.prj01.Bll包还引用了动态链接库文件notify.dll,但是对编译无影响,因为dll在程序运行时才会加载。

  2.3 编译com.prj01.main和com.prj01.fileUtility包

  图2表明com.prj01.main包的myMain.java需要使用xml\my.xml,和dll类似,它在运行时才会加载,对编译无影响,所以编译com.prj01.main包只需关注对BllClass.java的调用即可,命令如下:

  com.prj01.sqlUtility包的编译和com.prj01.fileUtility包完全类似,不再赘述。

  3 Windows命令行运行程序

  3.1 程序的运行目录和主文件

  本文项目的主程序是com.prj01.main.myMain.java,项目编译成功后在classes目录下创建了各个包的包目录并放置字节码文件,主程序的字节码文件是com\prj01\main\myMain.class,如图3所示,classes就是主程序的运行目录。

  图3 项目的包目录和编译生成目录  

  3.2 参数的使用

  1)-Djava.ext.dirs:运行时程序需要引用组件mail.jar和jnotify.jar,所以需要此参数。

  2)-sourcepath、-d和-encoding:这几个参数仅限于编译使用,运行时不需要。

  3)-Djava.library.path:用于指定动态链接库文件dll的位置,本文项目需要调用lib目录下的jnotify.dll,所以设置-Djava.library.path=./lib/,表示在当前目录下的lib中查找dll文件。

  4)-D<propertyName>:这是很有用的一个参数,用它可以自定义一个属性,在编写Java代码和运行程序时共同使用这个属性。在本项目中,运行主程序需要读取配置文件my.xml的内容,my.xml的路径不应在程序代码中写死,而应该在运行时指定并"通知"程序,可以自定义属性conf.xmlFile,在运行程序时设置参数-Dconf.xmlFile=d:\test\my.xml,而在代码中用System.getProperty("conf.xmlFile")读取conf.xmlFile属性的值"d:\test\my.xml",这使得程序读取xml和dll等文件具有很大的灵活性。

  3.3 运行项目主程序

  在classes目录下运行主程序要使用完整的包名。主程序名,主程序不需要加扩展名,命令如下:

  4 移植到Linux平台

  Linux编译、运行Java项目和Windows大同小异,需要注意以下差别。

  1)分号和冒号的差别:Windows平台的编译命令用分号分隔多个目录,而Linux平台使用冒号分隔。

  2)正斜杠和反斜杠的差别:Windows平台编译命令使用正反斜杠均可,而Linux平台使用正斜杠。

  3)版本的差别:检查程序引用的各个jar包是否有Linux版本,如果有的话及时更换。

  4)大小写的差别:Windows命令中的字符不区分大小写,Linux命令则对大小写敏感。

  5)动态链接库文件差别:Windows的动态链接库文件是dll,Linux平台下是so或jar.

  以com.prj01.Bll包为例,Linux平台的编译命令如下:

  Linux平台运行主程序如下:

  5 其他问题

  5.1 项目引用Eclipse插件问题

  在Windows的Eclipse环境下开发Java项目,可能会使用maven或者drools等插件,以drools 6.3规则引擎插件为例,相关的jar包括两处:

  1)droolsjbpm-tools-distribution-6.3.0.Final\binaries\org.drools.updatesite\plugins目录下的所有jar包;

  2)drools-distribution-6.3.0.Final\binaries目录下的所有jar包。

  其中plugins目录下的jar提供Eclipse集成环境下使用,命令行模式并不需要,只有binaries目录下的jar才是必须的,可以将这些jar拷贝到某目录下,无论是Windows还是Linux平台,使用参数-DJava.ext.dirs指定目录位置编译和运行即可。

  5.2 JDK版本一致性问题

  不同版本的JDK包含的类库不同,要保证Windows开发平台和Linux部署平台的JDK版本相同,否则可能出现错误,例如:Windows开发平台安装了JDK1.8,Linux服务器安装了JDK1.7,那么Windows开发环境可以使用Java.util.Base64包的类库,但是移植到Linux会出错,这是因为JDK1.7没有Java.util.Base64包。

  6 结束语

  本文以一个常见的Java项目为实例,阐述了在Windows和Linux不同平台下命令行编译、运行Java程序的每个步骤,解决了从Windows集成开发环境到Linux命令行模式的迁移问题,具有广泛的适用性。

  参考文献
  [1]金玉苹。实现将java技术移植到JVM上运行的方法[J].数字技术与应用,2012(7):244.
  [2]何兴鹏,刘钊远,陶琛嵘。Linux程序向Android平台移植的研究[J].计算机测量与控制,2018,26(5):112-115.
  [3]蒋跃,田田,夏永红,等。从Windows到Linux的C程序移植研究[J].雷达与对抗,2018,38(2):62-64.
  [4]刘洪星,谢玉山。Eclipse开发平台及其应用[J].武汉理工大学学报:信息与管理工程版,2005,27(2):89-92.
  [5]沈学银,刘中奇。Linux系统移植的分析[J].信息系统工程,2017(7):159-160.
  [6]孔美云,钱成特,刘加海。Linux程序在Windows上的移植及运行稳定性分析[J].浙江大学学报:理学版,2012,39(3):289-292.

  附录(略)

(如您需要查看本篇毕业设计全文,请您联系客服索取)

相关内容
相关标签:Java毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!