jar有没有一种方法可以让某人运行我的Java程序,而不让他们看到代码?
所以基本上我制作了一个依赖终端的Java程序,并想开始分发它,但如果不给他们我的代码,我似乎找不到一种方法来做到这一点。当你做一件事的时候。jar文件它只在Windows上工作
当我尝试在Linux(CentOS)上运行时
Exception in thread "main" java.lang.UnsupportedClassVersionError:
及
Could not find the main class: MyClass. Program will exit.
我正在使用java-jar-MyJar命令。jar来运行它们。我在这个程序中使用JavaMail,所以这可能是一个问题。只有一个类,其中有一个主类
如果有人甚至可以选择使用jar文件来交付用户无法读取代码的程序,那也太好了。谢谢
# 1 楼答案
与安装在客户机Linux机器上的JDK相比,您实际用于编译和构建Jar的JDK更为新。这时JVM抛出
通过在控制台上运行以下命令,让您的客户报告其Java版本
然后,如果您使用的是Eclipse,则相应地设置项目的目标运行时。如果你自己编译Java源文件
# 2 楼答案
对我来说,问题似乎在于,您在运行代码的不兼容版本上编译了代码。例如,您使用JDK 1.7编译了它,但CentOS只安装了java 1.5版本Here is some more detailed information on the matter.
至于你问题的标题,不,你不必给他们提供java源代码,让他们运行它。所以其他一些事情出了问题。很可能是我给出的答案
# 3 楼答案
关于问题标题:
混淆你的代码。不要直接打印你的名字,使用生成器方法
http://en.wikipedia.org/wiki/Obfuscation_(software)
http://www.yworks.com/en/products_yguard_about.htm
http://www.allatori.com/
http://www.zelix.com/
http://www.sable.mcgill.ca/JBCO/
# 4 楼答案
除了其他人描述的版本问题,以及您不需要分发的事实。java文件,您需要在应用程序jar文件的清单文件中设置一个类路径条目来引用JavaMail jar文件,并且您必须将应用程序jar文件和JavaMail jar文件交付给用户。这可能很难做到正确。你可能想看看One-JAR来解决这个问题