【问题标题】:How do I make my program, written in Java, usable to other people?我如何使我的用 Java 编写的程序对其他人可用?
【发布时间】:2011-09-23 18:39:44
【问题描述】:

所以我写了一个有趣的小程序,我想把它展示给我的一些朋友。我的朋友,不是程序员,不知道如果我将包含必要类和文件的文件夹发送给他们该怎么办。我希望能够通过电子邮件向他们发送一些东西(或将其放在 cd/thumbdrive 上),然后他们可以双击并让它运行程序。我完全不知道如何做到这一点。我正在上课,我们使用 linux 计算机(我不在课堂时使用 mac),我们必须 javac .java 文件,然后 java“文件名”以使其运行。我有朋友在 Mac 和 PC 上,我希望他们能够只需单击该程序并运行它....

如果有不同,则使用对象绘制库编写程序。

【问题讨论】:

  • 你知道如何制作可执行的 JAR 吗?
  • 这是一篇关于可执行jar的帖子introcs.cs.princeton.edu/java/85application/jar/jar.html
  • 有趣....是兼容Mac和Windows的可执行jar文件吗?
  • @CaldwellYSR,应该是,java 是跨平台的。
  • @CaldwellYSR:它们与安装了适当 JVM 的任何系统兼容(即,如果您在 Java 6 下编译应用程序,那么它们将需要 Java 6 JVM)。

标签: java object draw exe .app


【解决方案1】:

使用jar 命令构建可执行的jar 文件。它基本上是一个有一定保证的 ZIP 文件。

在 jar 文件中,您将需要(这是必需的)一个 /META-INF 目录,其中包含一个名为 the manifest (/META-INF/MANIFEST.MF) 的文件。它描述了 jar 文件的“清单”,在某些方面它模仿了运输清单。

在 MANIFEST.MF 文件中,您需要指令

Main-Class: org.mystuff.path.Main

当 jar 文件通过命令“执行”时,应该指示 JVM 运行 org.mystuff.path.Main 类

java -jar myproject.jar

请注意,JAR 文件倾向于以不同的方式处理类路径,因为它们忽略了 CLASSPATH 环境变量和 -classpath 命令行选项。如果需要引用其他 JAR 文件,则需要在 MANIFEST.MF 文件中添加类路径指令。使用上面的清单链接查看有关嵌入类路径的详细信息。

根据“项目”的简单性,一个 JAR 文件可能就足以发送给他们;但是,如果您需要更多,您可能会发现自己必须在几个目录中发送一些文件。在这种情况下,将文件(包括 JAR 文件)和目录放在第二个 zip 文件中。虽然您可以从多种不同的方式中选择“打包”物品,但我建议

(layout inside the zip file)
/Readme.txt (a text file describing what to do for new comers)
/License.txt (a text file describing how liberal / restrictive you wish to be concerning your authorship rights.
(the license sounds like overkill, but without it nobody can prove they're not breaking the law)
/bin/myprogram.sh (shell script containing "java -jar ../lib/myprogram.jar")
/bin/myprogram.cmd (Windows batch file containing "java -jar ..\lib\myprogram.jar")
/lib/myprogram.jar (the executable jar file containing your compiled code)
/lib/otherjar.jar (other jar files, as necessary)

有了这样的 zip 文件结构,安装说明就变成了“解压 zip 文件;将目录更改为“bin”并运行“myprogram.whatever”。

【讨论】:

    【解决方案2】:

    您需要告诉我们您使用的是哪个 IDE,但只需将其编译成可执行 jar,它们可以在所有具有您再次编译它们的 java 版本的系统上运行(如此多平台)

    【讨论】:

    • 不使用 IDE 我使用命令提示符来编写、编译和运行文件。
    • 使用 IDE,它会帮助你。 Eclipse、Netbeans 或 IntelliJ。
    【解决方案3】:

    我会说使用小程序然后不需要运行任何命令。这是你可以做的事情

    1. 如果您有多个类,则创建一个executable jar,如果不想创建 jar,请将您的所有代码移到一个类中
    2. 然后创建一个扩展 Applet 的类,您可以从这个小程序类加载您的程序,或者甚至更好地将所有东西移动到小程序类(不是最好的设计,但在这种情况下让您的生活更轻松)
    3. 然后创建一个类似这样的 html 文件,这个 html 有脚本,可以指导如何查看程序

       <script>
        var jEnabled = navigator.javaEnabled();
        if (!jEnabled){
      
                 document.write("<a href=\"http://www.java.com/en/download/help/enable_browser.xml\">Enable Java</a> on your  browser to view me ");
        }
       </script>
      
       <br><br>
       <applet code="AppletLauncher.class" width=100 height=140/>
      

    【讨论】:

    • 我的问题是我已经在扩展 WindowController,因为它是使用 ObjectDraw 库编写的。我制作了一个可执行的 jar,但它不起作用,我认为这是因为 ObjectDraw。我想我得等到下学期我们不再使用 ObjectDraw 了。
    • 啊我没看到关于ObjectDraw的评论,看看Java Web Start,它有点详细但会是一个很好的学习工具download.oracle.com/javase/6/docs/technotes/guides/javaws
    【解决方案4】:

    使用objectdraw创建可执行jar文件:

    objectdraw 通常与 BlueJ IDE 一起使用,因此这些说明适用于使用 BlueJ 和 objectdraw 库。

    1. 确保您有一个具有 begin() 方法的类。这是你在 BlueJ 中运行的类,现在你想把它变成一个可执行的 jar 文件。

    2. 你需要创建一个新类,我们称之为 Main。它应该是这样的:

      public class Main{
      
          public static void main(String[] args){
              ClassWithABeginMethod game = new ClassWithABeingMethod();
              game.begin();
          }
      
      }
      
    3. 现在,在 BlueJ 中,打开项目下拉菜单。选择“创建 Jar 文件...”。

    4. 在打开的对话框中: 确保“Main”类是为 Main 类选项选择的类。 在“包括用户库”下,选择“objectdraw.jar”选项。 按继续。

    5. 打开的新对话框询问您要将包含新 jar 文件的新文件夹保存在何处。将它命名为您想要的名称。结果将是一个具有您选择的名称的新文件夹,其中包含一个同名的 jar 文件。

    6. 你已经完成了。使用命令行提示符:“java -jar jarFileName.jar”运行新的 jar 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2010-12-21
      • 2011-09-05
      • 2011-10-04
      • 2013-04-29
      • 2017-04-12
      相关资源
      最近更新 更多