关于java代码打包成JAR的运行结果和eclipse中运行结果不一样的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java代码打包成JAR的运行结果和eclipse中运行结果不一样的问题相关的知识,希望对你有一定的参考价值。

最近写了一个软件,是使用post请求多线程访问接口的测试程序,在eclipse中运行结果正常,但是打包成jar包后访问接口却全部访问失败。网络是肯定正常的。
我尝试过很多,但最终还是没有找到原因。求大神帮忙鉴定一下症结所在:

(1)首先我怀疑是加密问题,我使用的是AES 128位加密,从oracle官网下载了解锁版jce,替换进jre7\lib\security,在eclipse中运行没有问题。打包成jar发现访问失败,在jdk\jre\lib\下在创建了security文件夹,将相关jar复制进去,结果无效;将这两个jar直接导入到工程的第三方库,然后再打包,依然无效。所以排除了加密问题的可能性。
(2)怀疑是编码的问题,一开始我是在UTF-8环境下编码,但是WIN7用的是GBK,所以我把默认环境调成GBK后,先在eclipse里运行一下,访问成功,然后再打包,但是依旧访问接口失败。所以排除了编码问题的可能性。
(3)怀疑是打包姿势不对,于是按着很多教程打,手工打包、runnablejar、fatjar都试遍了,但还是访问接口失败。这下我真不知道是哪里了问题了。
求专业人士指教……如果可以详细交流的请留下Q
补充:我用的是POST请求,上传数据用的是JSON数组,加密用的是128位AES(在jre里装了破解jar),请求数据的charset是UTF-8,系统用的是win7(GBK)。
json数组加密后变成了空白一片“”

经过不断探索,问题原因已经找到,是电脑里JAVA环境的问题,我下载并替换了JDK7的解锁版jce,但是我电脑里装了JDK8,把JDK8也给替换上JDK8的解锁版jce就可以了。感谢大家的热心解答。

用命令行启动jar文件
java -jar xx项目.jar
运行项目期间可以在命令行中看到日志记录,根据错误日志对症下药,凭借你的描述瞎指点基本上是乱弹琴!
祝你成功!
参考技术A 全部失败这个描述实在是没有任何意义
建议你记录下log,然后贴上错误的log才是正道追问

加密的时候出现了问题,不加密的数据访问接口都是成功的。
加密后json数组直接是空白的“”

参考技术B 用反编译工具看看你jar包里的程序和eclipse中的一样吗

如何把java程序打包成.jar?

把代码和数据库打包,直接可运行...

方案一:用Eclipse自带的Export功能
步骤1:准备主清单文件 “MANIFEST.MF”,
步骤2:右击Java工程选择Export—>选择JAR file—>Next
步骤3:选择要打包的文件,不需要的文件不必打包,减小打包后的jar文件大小,并进行选项配置如下
步骤4:选择我们在第一步中自定义的配置文件路径,这一步很重要,不能采用默认选项
方案二:安装Eclipse打包插件Fat Jar
Fat Jar Eclipse Plug-In是一个可以将Eclipse Java Project的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是eclipse自带的打包jar似乎不太够用,Fat Jar是eclipse的一个插件,特别是Fat Jar可以打成可执行Jar包,并且在图片等其他资源、引用外包方面使用起来更方便。
步骤1:右击工程项目选择Buile Fat Jar
步骤2:配置jar文件存放目录,主Main文件等,如下图
步骤3:选择所要用到的第三方jar包
参考技术A 运行-cmd
用法: jar ctxui[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] file
s ...
选项包括:
-c 创建新的归档文件
-t 列出归档目录
-x 解压缩已归档的指定(或所有)文件
-u 更新现有的归档文件
-v 在标准输出中生成详细输出
-f 指定归档文件名
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储;不使用任何 ZIP 压缩
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含其中的文件
如果有任何目录文件,则对其进行递归处理。
清单文件名、归档文件名和入口点名的指定顺序
与 "m"、"f" 和 "e" 标志的指定顺序相同。

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:
jar cvf classes.jar Foo.class Bar.class
示例 2:使用现有的清单文件 "mymanifest" 并
将 foo/ 目录中的所有文件归档到 "classes.jar" 中:
jar cvfm classes.jar mymanifest -C foo/ .
参考技术B 打包成一般的jar包的步骤如下:
1.输入如下命令即可:
Cmd代码
jar cvf counter.jar -C bin .
其中,“-C bin”实际上是告诉jar命令先cd到bin目录下,再在此目录执行没有参数“-C bin”的命令,等价于:
2.Cmd代码
cd bin
jar cvf counter.jar . // "."代表当前路径
参考技术C eclipse 中项目点右键 export 里面有个jar
然后有个main 选择你程序的入口文件,也就是有 main函数的那个文件
下一步下一步的 你可以看懂本回答被提问者采纳
参考技术D eclipse的话用导出就可以!

以上是关于关于java代码打包成JAR的运行结果和eclipse中运行结果不一样的问题的主要内容,如果未能解决你的问题,请参考以下文章

java 多个类文件如何打包成jar

Java代码打包成可运行jar文件后,双击jar文件后DOS窗口一闪而过,程序不能打开,通过DOS命令可以的

eclipse中怎样将项目打包成jar

怎么把java文件打包成jar文件

将写好的java代码打包成jar包并且运行

怎样将java源代码打包成可执行jar文件或exe文件