java手动编译打包过程_Java 手动编译打包实践

本文详细介绍了如何手动编译并打包Java程序,包括编译各个Java类、打包成jar文件以及运行带有依赖的类。通过具体的操作步骤,展示了如何处理类的编译、设置classpath以及运行带有jar依赖的程序。
摘要由CSDN通过智能技术生成

假设有如下的目录结构:

D:\TMPMULU

└─mytest

├─AnotherPackage

│      ClassPrintA.java

│      ClassPrintB.java

└─mytestpkg

Tj.java

Tj.java类有个main方法,并且运行的时候要调用ClassPrintA和ClassPrintB类。

源代码分别如下:

packagemytest.AnotherPackage;

publicclassClassPrintA {

publicvoidPrintA()

{

System.out.print("AAAA");

}

}

packagemytest.AnotherPackage;

publicclassClassPrintB {

publicvoidPrintB()

{

System.out.print("BBBB");

}

}

packagemytest.mytestpkg;

importmytest.AnotherPackage.*;

publicclassTj {

publicstaticvoidmain(String[] args) {

// TODO Auto-generated method stub

System.out.print("helllllllll");

ClassPrintA ca=newClassPrintA();

ca.PrintA();

ClassPrintB cb=newClassPrintB();

cb.PrintB();

}

}

现在的任务是把ClassPrintA和ClassPrintB编译打包成jar文件。

Tj类通过这个jar,一起编译。最后运行。

第一步,编译各个java类。

编译的话,不需要指定classpath。

通过命令javac编译。javac的具体参数可以下面地址查到:

在Cmd命令后,先对文件ClassPrintA和ClassPrintB编译。依次输入命令如下:

C:\Users\Administrator>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" D:\tmpm

ulu\mytest\AnotherPackage\ClassPrintA.java

C:\Users\Administrator>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" D:\tmpm

ulu\mytest\AnotherPackage\ClassPrintB.java0818b9ca8b590ca3270a3433284dd417.png

运行成功后,在D:\tmpmulu\mytest\AnotherPackage\目录下会有2个class文件。

第二步打包。

对这2个class文件打包,通过jar命令。Jar的使用细节,可以通过以下网址获得:

注意,jdk的版本一定要正确。32位的装32位机器,64位的装64为机器。

运行命令:

要打包成jar文件,运行命令:

C:\Users\Administrator>"C:\Program Files\Java\jdk1.7.0_10\bin\jar.exe" cvf myjar.jar

D:\tmpmulu\mytest\AnotherPackage\ClassPrintA.class D:\tmpmulu\mytest\AnotherPac

kage\ClassPrintB.class

已添加清单

正在添加: D:/tmpmulu/mytest/AnotherPackage/ClassPrintA.class(输入 = 417) (输出 =

289)(压缩了 30%)

正在添加: D:/tmpmulu/mytest/AnotherPackage/ClassPrintB.class(输入 = 417) (输出 =

289)(压缩了 30%)

0818b9ca8b590ca3270a3433284dd417.png

最后在C:\Users\Administrator\目录下得到myjar.jar。用解压软件打开看到:

0818b9ca8b590ca3270a3433284dd417.png

显然,jar程序会根据你输入的路径结构来打包,因此把D盘都打了进去,这一点如果使用相对路径就不是很方便,因此,重新将当前目录切换到D:\TMPMULU\,再次打包。

0818b9ca8b590ca3270a3433284dd417.png

这次得到的jar包的目录就是相对目录了。

0818b9ca8b590ca3270a3433284dd417.png

第三步,编译Tj文件。

由于Tj代码中引用到了ClassPrintA和ClassPrintB,因此编译的时候,要么引入jar包,要么引入文件位置,两种方式都可以。

先看第一种,引入jar包。

引入jar包,就必须指定jar包文件的位置,为了避免类文件的干扰,先把类文件删除。

下面2个命令都可以

D:\tmpmulu>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp .\myjar.jar D:\

tmpmulu\mytest\mytestpkg\Tj.java

D:\tmpmulu>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu\myja

r.jar D:\tmpmulu\mytest\mytestpkg\Tj.java

0818b9ca8b590ca3270a3433284dd417.png

在这种编译下,需要找到之前的jar包,因此通过设定环境变量。-cp .就是把环境变量设为当前路径。也可以写成绝对路径。

在没有jar包的境况下,可以通过设定环境变量,找类文件。这次,为了避免jar文件的干扰,先把jar文件删除。

D:\tmpmulu>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp . D:\tmpmulu\my

test\mytestpkg\Tj.java

D:\tmpmulu>"C:\Program Files\Java\jdk1.7.0_10\bin\javac.exe" -cp d:\tmpmulu D:\t

mpmulu\mytest\mytestpkg\Tj.java

只要设定了环境变量,javac会从该路径找需要的类。

注意,Java中,Java类中包名必须要有对应的路径。就是说,要在某个文件夹中找到mytest.AnotherPackage.ClassPrintA这个类,必须在这个文件夹中找到mytest\AnotherPackage\ClassPrintA.class类,如果没有这样的目录结构,java认为没有找到该包,因此也没找到这样的类。因此,环境变量设为d:\tmpmulu后,在d:\tmpmulu路径下,有mytest\AnotherPackage这个的层次,因此也就能找到里面的类。

无论是引用的jar还是源文件,编译后都会在D:\tmpmulu\mytest\mytestpkg得到Tj.class。

可以尝试运行这个文件。

第四步 运行Tj类文件

运行类文件,也需要指定classpath,并且也是按照包的层次在目录结构中找类。

如果classpath指定为jar包,则不需要之前的类文件了,直接可以运行。但是要注意,类一定要按照包的层次结构放置。指定类名的时候,必须写全包名,设置环境变量的时候,注音不要漏了';'。

如下的命令:

D:\tmpmulu>java -cp d:\tmpmulu\myjar.jar; mytest.mytestpkg.Tj

helllllllllAAAABBBB

D:\tmpmulu>java -cp myjar.jar; mytest.mytestpkg.Tj

helllllllllAAAABBBB

D:\tmpmulu>java -cp .\myjar.jar; mytest.mytestpkg.Tj

helllllllllAAAABBBB

0818b9ca8b590ca3270a3433284dd417.png

当然,如果没有jar包,那也是可以的。

直接将环境变量社会class文件所在的位置,总之一定要让java找到那些类文件。

D:\tmpmulu>java -cp . mytest.mytestpkg.Tj

helllllllllAAAABBBB

D:\tmpmulu>java -cp .\ mytest.mytestpkg.Tj

helllllllllAAAABBBB

D:\tmpmulu>java -cp D:\tmpmulu mytest.mytestpkg.Tj

helllllllllAAAABBBB

0818b9ca8b590ca3270a3433284dd417.png

如果把运行的class移到别目录也可以,运行时只要保证java能找到那些class就行,比如,移到E:\testrun

那么首先保证类所在的位置和它的包名一致。

E:\TESTRUN

└─mytest

└─mytestpkg

Tj.class

C:\Users\Administrator>java -cp d:\tmpmulu\myjar.jar;e:\testrun\;  mytest.mytest

pkg.Tj

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手动编译生成Java版本的vtk.jar,你可以按照以下步骤进行操作: 1. 确保你已经正确地安装了VTK 9.2.6的源代码,并且已经设置了Java环境。 2. 打开命令提示符(CMD)并进入到VTK源代码目录。 3. 创建一个用于构建的目录,例如"build"。 4. 进入到构建目录中,并运行以下命令来配置构建过程: ``` cmake -DVTK_WRAP_JAVA=ON -DCMAKE_BUILD_TYPE=Release .. ``` 这将启用Java包的构建,并设置构建类型为Release。 5. 使用CMake生成Visual Studio项目文件。在构建目录中运行以下命令: ``` cmake --build . --config Release ``` 这将使用CMake生成Visual Studio项目文件,并开始编译VTK。 6. 打开生成的Visual Studio项目文件(位于构建目录中),在Visual Studio中进行构建。 7. 构建成功后,你将在构建目录下的bin\Release文件夹中找到生成的DLL文件。 8. 在VTK源代码目录中找到Wrapping\Java文件夹。如果该文件夹不存在,请手动创建它。 9. 将生成的DLL文件复制到Wrapping\Java文件夹中。 10. 在命令提示符中,进入到Wrapping\Java文件夹,并运行以下命令来生成vtk.jar: ``` jar cvf vtk.jar vtk/*.class ``` 这将使用jar命令将vtk文件夹下的所有.class文件打包为vtk.jar。 11. 完成后,你将在Wrapping\Java文件夹中找到生成的vtk.jar文件。 请注意,以上步骤仅供参考,具体的操作可能会因个人设置和环境而有所不同。如果遇到问题,请参考VTK的官方文档、社区论坛或向VTK开发者寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值