2016-07-23 116 views
1

我想让我的NetBeans项目在竹子中构建。它大部分似乎都在工作,但我无法在构建NetBeans时启动我的项目。如何将NetBeans ant build移植到构建服务器(Atlassian Bamboo)

当我构建netbeans时,它(通过默认的ant build)将我的相关库粘贴到一个名为dist/lib/commons-math3-3.6.1.jar的目录中,我的jar创建于:dist/MyJar.jar 。我可以通过键入运行我的罐子

java -jar MyJar.jar 

它会找到我的依赖库。但是,当我建立竹子时,有一点不同,我注意到哪些是我的库没有复制到dist/lib /。但由于他们在我的项目的根本不是一个问题,我只是继续并从我的/ libs /到/ dist/lib /重新复制他们,然后我尝试“java -jar MyJar.jar”命令,但我得到这个错误:

[email protected]:~dist/$ java -jar MyJar.jar 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/descriptive/moment/StandardDeviation 
    at readnthvalue.App.<clinit>(App.java:26) 
    at readnthvalue.MainFrame.<init>(MainFrame.java:31) 
    at readnthvalue.MainFrame.lambda$main$0(MainFrame.java:365) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.stat.descriptive.moment.StandardDeviation 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 17 more 

任何想法或建议从蚂蚁和atlassian竹知识的人是非常感谢。

我应该提到,md5sum不同于工作罐和用竹子建造的工作罐。

我用命令:蚂蚁干净的jar命令行来构建

UPDATE 2017年8月4日

我注意到,竹我得到这个:

build 04-Aug-2017 14:02:51 -do-jar-jar: 
build 04-Aug-2017 14:02:51 [j2seproject1:jar] Building jar: /home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/dist/auratec-helper.jar 
build 04-Aug-2017 14:02:51   [echo] To run this application from the command line without Ant, try: 
build 04-Aug-2017 14:02:51   [echo] /home/filtec/jdk1.8.0_65/jre/bin/java -cp /home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jfreechart-1.0.19.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jcommon-1.0.23.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/commons-math3-3.6.1.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jSerialComm-1.3.11.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/dist/auratec-helper.jar filtec.auratec.MainFrame 

但在NetBeans中我得到这个输出:

Building jar: /home/james/NetBeansProjects/auratec-helper/dist/auratec-helper.jar 
To run this application from the command line without Ant, try: 
java -jar "/home/james/NetBeansProjects/auratec-helper/dist/auratec-helper.jar" 

所以我想我的新更新的问题是为什么在我的工作站上,在竹服务器上的构建与行为不同。什么是未复制的依赖jar以及为什么我能够使用-jar选项来运行文件,在构建服务器上我需要使用vanilla java在从竹服务器上的ant脚本构建时运行。

+0

首先,你不应该在dist文件夹中放置任何东西。它只用于构建,并且每次都会清理干净。 Colud包你netbeans项目归档并通过任何可用的服务分享它。例如:http://dropcanvas.com –

+0

我可能正在遵循dist dir的最佳实践,并使用NetBeans默认行为擦除dist dir clean并将发布jar复制到dist文件夹中。顺便说一下,它的NetBeans最初是通过它的默认构建脚本来完成的。 – simgineer

+0

这里是我的项目的链接:https://drive.google.com/open?id = 0B5FRf3pjR6UBQmVRY1B4QlB4a2M – simgineer

回答

0

这是一个痛苦的想法。基本上,copylibstask.jar需要在竹上可用,但由于NetBeans未安装在构建服务器上,因此我们需要手动引用它。我已将副本放入/libs/org-netbeans-modules-java-j2seproject-copylibstask.jar,并在project.properties文件中引用它。

# this is needed for the ant build 
libs.CopyLibs.classpath=libs/org-netbeans-modules-java-j2seproject-copylibstask.jar 

这些库现在正在复制,并且jar可以再次执行。