如何使用army bear common lisp 创建jar?

S D*_*lly 4 java common-lisp

我想知道是否可以使用army bear common lisp 创建一个jar 文件,如果可以的话该怎么做。

\n\n

换句话说,我有以下代码(格式为“Hello, World!~%”)),我可以在armed bear common lisp中运行它。我想知道如何创建一个执行该代码的 jar。\xe2\x80\x93

\n\n

谢谢,

\n\n

肖恩.

\n

Ell*_*sch 7

文档说(在第 3.3 节,对于 pdf 感到抱歉)-

3.3.2 实现的 JSR-223 接口

JSR-223 定义了三个主要接口,其中两个 (InvocableCompilable) 是可选的。ABCL 几乎完全实现了所有三个接口ScriptEngine以及两个可选接口。

只需五个简单步骤即可使用ABCL创建可执行 jar

第一步:创建一个装有武装熊的胖罐子。

我将使用 Maven,因为这是我所知道的。让我们创建一个pom.xml文件。

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.stackoverflow.example</groupId>
    <artifactId>ColbertNightmare</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <name>Stephen Colbert's Nightmare - Armed Bears</name>
    <dependencies>
        <dependency>
            <groupId>org.abcl</groupId>
            <artifactId>abcl</artifactId>
            <version>1.6.0</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>ColbertNightmare</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.stackoverflow.example.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>    
Run Code Online (Sandbox Code Playgroud) 第二步:我们需要遵循maven标准目录结构。

我们将有一个 Java 类作为入口点。在包含 的文件夹中pom.xml

mkdir -p src/main/java/com/stackoverflow/example
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Windows,则需要(相反)

mkdir src\main\java\com\stackoverflow\example
Run Code Online (Sandbox Code Playgroud) 第三步:编写Java代码(在我们刚刚创建的文件夹中)

创建一个Main.java文件,其中包含(注意我修复了)LISP 代码中的一个额外错误)

package com.stackoverflow.example;

import javax.script.ScriptException;

import org.armedbear.lisp.scripting.AbclScriptEngine;
import org.armedbear.lisp.scripting.AbclScriptEngineFactory;

public class Main {
    public static void main(String[] args) {
        AbclScriptEngine scriptEngine = (AbclScriptEngine) new AbclScriptEngineFactory()
                    .getScriptEngine();
        try {
            scriptEngine.eval("(format t \"Hello, World!~%\")");
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud) 第四步:让我们构建并打包我们的应用程序。

在包含 的文件夹中pom.xml

mvn package
Run Code Online (Sandbox Code Playgroud) 第五步:运行它
$ java -jar target/ColbertNightmare-jar-with-dependencies.jar
Hello, World!
Run Code Online (Sandbox Code Playgroud) 结论

类似上面的东西可以用来创建一个使用 ABCL 的可执行 jar。此外,史蒂芬·科尔伯特(Stephen Colbert)警告我们有关熊的事情(在它们武装之前)。我认为他们现在是一个更大的威胁。