小编Fab*_*der的帖子

Maven可执行程序Jar在启动时抛出错误

首先:我是maven的新手.我制作了我的第一个maven应用程序并在IDE中成功测试了它.构建总是成功的,一切都像魅力一样.

现在我想将项目导出为内置依赖项的可执行jar,但我不确定它为什么不起作用.

我将以下内容添加到我的pom文件中,因为这是我在类似问题的各种答案中找到的

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.pwc.scfa.pensareautomatio3.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我知道这指定了JVM启动的主类,因为IDE没有自动设置它.

我将jar放在目标目录中,将其复制到另一个目录并尝试执行它.

遗憾的是,引发了以下错误:

在此输入图像描述

在此输入图像描述

能否请你给我一个提示,我可能出错了?那太好了.(我正在使用NetBeans,如果有任何帮助的话.)

这是我的StackTrace:

C:\Users\scfa\Desktop>java -jar PensareAutomatio-1.1.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxm
l4j/exceptions/InvalidFormatException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions
.InvalidFormatException
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

java netbeans build executable-jar maven

5
推荐指数
1
解决办法
5168
查看次数

将Haskell lib导出为DLL

我使用的是GHC版本7.6.1,请按照文档中从Haskell库创建DLL以便在VBA中使用DLL的步骤进行操作: GHC Docs 7.6.1#创建一个DLL

我使用的文件与文档中的文件完全相同。关于编译,命令的以下内容几乎可以按预期工作:

ghc -c Adder.hs
ghc -c StartEnd.c
Run Code Online (Sandbox Code Playgroud)

第一条命令返回以下内容:

Adder.hs:7:1: Warning:
    the 'stdcall' calling convention is unsupported on this platform,
    treating as ccall
    When checking declaration:
      foreign export stdcall "adder" adder :: Int -> Int -> IO Int
Run Code Online (Sandbox Code Playgroud)

我猜应该没问题...

但是,最后一条命令ghc -shared -o Adder.dll Adder.o Adder_stub.o StartEnd.o会产生此错误:

Adder_stub.h:1:19:  fatal error: HsFFI.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

该线程使我认识到GHC没有使用其中的头文件GHC-HOME/lib/include。此线程中的解决方案是将GHC与该选项一起使用-I [path to include-folder],但是,在尝试使用该版本(并查看man和docs)时,此版本的GHC没有此类选项。在8.4.3之前的更新版本中也没有。

阅读本文档时,我还遇到了可以mk-dll在Windows下使用该选项生成dll的可能性。但是,根据我安装的GHC的手册页,即使下载并安装了Windows 64位安装程序,也没有这种选择。

然后,我尝试将include文件夹复制到其他位置。将第三个编译命令所需的文件也复制到该文件夹​​中,然后再次尝试。它成功编译了DLL。

但是,当我尝试从Excel(启用宏的工作簿)中使用DLL时,出现未找到错误DLL的错误。尝试在excel中引用DLL时(通过“工具”->“参考”->“浏览”->“ chooseDll”),它告诉我无法添加DLL。 …

dll excel vba haskell ghc

5
推荐指数
1
解决办法
202
查看次数

理解clpfd中label/5的实现

我试图了解库中label/5 谓词的实现(我了解用法)clpfd

从这里复制

1824label([], _, _, _, 一致性) :- !,
1825(一致性= upto_in(I0,I)-> I0 = I
1826 年;真的
1827 年)。
1828label(变量、选择、顺序、选择、一致性):-
1829 (Vars = [V|Vs], nonvar(V) -> label(Vs, Selection, Order, Choice, Consistency)
1830 年;select_var(选择,Vars,Var,RVars),
1831 ( var(Var) ->
1832(一致性= upto_in(I0,I),fd_get(Var,_,Ps),all_dead(Ps)->
第 1833 章
1834 I1是I0*大小,
1835标签(RVars,选择,顺序,选择,upto_in(I1,I))
1836 年;一致性 = upto_in, fd_get(Var, _, Ps), all_dead(Ps) ->
1837 标签(RVars、选择、顺序、选择、一致性)
1838 年;choice_order_variable(选择、顺序、变量、RVars、变量、选择、一致性)
第1839章
1840 年;标签(RVars,选择,顺序,选择,一致性)
第1841章
1842 年)。

尤其是标记部分(显然是重要部分)让我感到困惑:

  • 我不太确定fd_get(/3/5) 做什么
  • all_dead …

implementation prolog swi-prolog labeling clpfd

3
推荐指数
1
解决办法
87
查看次数

如何在purescript中制作大写记录?

我有一个 API 强制我以以下形式返回 JSON

{ Field1: "something"
, Field2: 12 }
Run Code Online (Sandbox Code Playgroud)

然而,到目前为止,我还没有在 Purescript 中对此进行建模。

据我了解,purescript 语法看到大写字段名称并认为它是没有字段名称的字段类型。所以我并不直接编码像这样的函数

test :: Number -> { Field1 :: String, Field2 :: Number }
Run Code Online (Sandbox Code Playgroud)

在不使用外部 javascript 函数将对象更改为其他内容的情况下,是否可以在 purescript 中构造具有大写字段名称的记录?如果是这样,怎么办?

record uppercase purescript

3
推荐指数
1
解决办法
91
查看次数