Netbeans + JAR question.

InNoCenT_Ch1ld
InNoCenT_Ch1ld used Ask the Experts™
on
when i run my application using netbean, everything's is OK.
but when i run the JAR file generate by Netbean under the dist folder, it failed, displaying error msg = can't find main class.

can anyone tell me what happen?
plz..
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
zzynxSr. Software engineer

Commented:
Is the path from where you run the JAR file in your classpath?
Top Expert 2016

Commented:
You need to run

java -classpath your.jar MainClass

or do

java -jar your.jar

(where the the manifest contains the following:)

Main-Class: MainClass

Author

Commented:
hmm...... that's a good question..
i'll go find out ;)
CompTIA Security+

Learn the essential functions of CompTIA Security+, which establishes the core knowledge required of any cybersecurity role and leads professionals into intermediate-level cybersecurity jobs.

Author

Commented:
CEHJ, i have the manifest, and the Main-Class: myclass is correct. that's y i so confused...

zzynx, well, i've check, and the classpath is set.

OMG!!!!
zzynxSr. Software engineer

Commented:
CEHJ's command

>> java -classpath your.jar MainClass

takes care of that
Top Expert 2016

Commented:
If you need other stuff in the classpath, do

java -classpath %CLASSPATH%;your.jar MainClass

(assuming Windows)


Author

Commented:
ok, now:

Exception in thread "main" java.lang.NoClassDefFoundError: de/javasoft/plaf/synthetica/SyntheticaStandardLookAndFeel

even more confused... i have added this into my classpath. and when i run on netbean it work - the synthetica L&F is nice!
but why it got this error while running on jar?

Author

Commented:
and now, i dun even sure which one is the problem...
zzynxSr. Software engineer

Commented:
See CEHJ's comment ;°)
Top Expert 2016

Commented:
What

Class-Path:

is set in the jar?
zzynxSr. Software engineer

Commented:
If you use

    java -classpath

you really overwrite the classpath with only your.jar
That's why you have the error. Now you miss the other jars you also need
Top Expert 2016

Commented:
This may not be the time to be getting general but IMO the idea of jar packaging is to make the jar as self-sufficient as possible. That would mean using *its* internal Class-Path to resolve dependencies or better still, packaging the de.javasoft classes within it, although this last is a matter of opinion ;-)

Author

Commented:
CEHJ, no, i dun set the Class-Path: in manifest.. coz when i clean and build project using netbean, it will delete the jar and recreate it again.. and since i'm very new to Netbean, i really dunno whether i could create a manifest, so that each time when i build the project, it will take my manifest file instead of creating it from the build.xml.

zzynx, i have actually set my classpath in Windows Environment Variables. including the look and feel jar. but i will try again to make sure.
Top Expert 2016

Commented:
The point is that you have control over the manifest if you can execute build.xml, but let's move away from the general

Author

Commented:
sadly, i removed the synthetica jar from my application, build the jar again.... and know what? it work.... damn it!
i actually add three different look and feels, the other two work, just this synthetica, which i consider so very nice....
dun understand at all
Top Expert 2016

Commented:
It would help if you could post build.xml (if you're using this to make the jar)

Author

Commented:
the build.xml?
i don't really know anything bout xml. it created by NetBeans itself.

and there's a manifest file in my project folder, also created by Netbeans. the content of the manifest:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

Author

Commented:
this is the content of my build.xml...

<?xml version="1.0" encoding="UTF-8" ?>
- <!--  You may freely edit this file. See commented blocks below for
  -->
- <!--  some examples of how to customize the build.
  -->
- <!--  (If you delete it and reopen the project it will be recreated.)
  -->
- <project name="epos" default="default" basedir=".">
  <description>Builds, tests, and runs the project epos.</description>
  <import file="nbproject/build-impl.xml" />
- <!--
    There exist several targets which are by default empty and which can be
    used for execution of your tasks. These targets are usually executed
    before and after some main targets. They are:

      -pre-init:                 called before initialization of project properties
      -post-init:                called after initialization of project properties
      -pre-compile:              called before javac compilation
      -post-compile:             called after javac compilation
      -pre-compile-single:       called before javac compilation of single file
      -post-compile-single:      called after javac compilation of single file
      -pre-compile-test:         called before javac compilation of JUnit tests
      -post-compile-test:        called after javac compilation of JUnit tests
      -pre-compile-test-single:  called before javac compilation of single JUnit test
      -post-compile-test-single: called after javac compilation of single JUunit test
      -pre-jar:                  called before JAR building
      -post-jar:                 called after JAR building
      -post-clean:               called after cleaning build products

    (Targets beginning with '-' are not intended to be called on their own.)

    Example of inserting an obfuscator after compilation could look like this:

        <target name="-post-compile">
            <obfuscate>
                <fileset dir="${build.classes.dir}"/>
            </obfuscate>
        </target>

    For list of available properties check the imported
    nbproject/build-impl.xml file.


    Another way to customize the build is by overriding existing main targets.
    The targets of interest are:

      -init-macrodef-javac:     defines macro for javac compilation
      -init-macrodef-junit:     defines macro for junit execution
      -init-macrodef-debug:     defines macro for class debugging
      -init-macrodef-java:      defines macro for class execution
      -do-jar-with-manifest:    JAR building (if you are using a manifest)
      -do-jar-without-manifest: JAR building (if you are not using a manifest)
      run:                      execution of project
      -javadoc-build:           Javadoc generation
      test-report:              JUnit report generation

    An example of overriding the target for project execution could look like this:

        <target name="run" depends="epos-impl.jar">
            <exec dir="bin" executable="launcher.exe">
                <arg file="${dist.jar}"/>
            </exec>
        </target>

    Notice that the overridden target depends on the jar target and not only on
    the compile target as the regular run target does. Again, for a list of available
    properties which you can use, check the target you are overriding in the
    nbproject/build-impl.xml file.

   
  -->
  </project>

Author

Commented:
CEHJ, zzynx, or any experts,

i've up the points from 100 to 500, just to find out why:
when run on NetBeans, it is ok; but when i run through JAR, it has problem? I'm kind of worry coz i will be using a lots of third parth JAR file for my application, it things like this keep happen, then i will be facing a big problem!

tks in advanced!
zzynxSr. Software engineer
Commented:
>> when run on NetBeans, it is ok;
Because NetBeans takes care of all the classpath troubles for you
(You just mount the jar's you need and NB takes care of them)

Author

Commented:
but the scenario is like this:

i actually dumb all three look and feel's jar file in a folder call "thirdparty", and i add them into my project.
ok, i do not set any classpath (not in Windows Environment Variables).
i run on NetBean, everything works.

but when i run on JAR generated by NetBean, it has problem, but only with one of the three JAR file.
say i have a.jar b.jar and problem.jar, the problem no longer occur after i remove the problem.jar from my project...

and this is the strange thing.
what make problem.jar different from the other two?

Author

Commented:
i suspect maybe the problem.jar really got some problem... but if it does, it wont be able to run in NetBean as well rite?
Top Expert 2016

Commented:
THe easiest way is to deal with build.xml - still haven't seen it ..;-)

Author

Commented:
CEHJ, i have found some xmls under my project folder - i think NetBean creates them, coz i have no idea where they from.
i got:

project.xml
build-impl.xml
build.xml

the build.xml is what i posted above. the build-impl.xml is quite long...
here u go:

<?xml version="1.0" encoding="UTF-8" ?>
- <!-- *** GENERATED FROM project.xml - DO NOT EDIT  ***
***         EDIT ../build.xml INSTEAD         ***

For the purpose of easier reading the script
is divided into following sections:

  - initialization
  - compilation
  - jar
  - execution
  - debugging
  - javadoc
  - junit compilation
  - junit execution
  - junit debugging
  - applet
  - cleanup


  -->
- <project name="epos-impl" default="default" basedir=".." xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">
  <target name="default" depends="test,jar,javadoc" description="Build and test whole project." />
- <!--  
    ======================
    INITIALIZATION SECTION
    ======================
   
  -->
- <target name="-pre-init">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-init-private" depends="-pre-init">
  <property file="nbproject/private/private.properties" />
  </target>
- <target name="-init-user" depends="-pre-init,-init-private">
  <property file="${user.properties.file}" />
- <!--  The two properties below are usually overridden
  -->
- <!--  by the active platform. Just a fallback.
  -->
  <property name="default.javac.source" value="1.4" />
  <property name="default.javac.target" value="1.4" />
  </target>
- <target name="-init-project" depends="-pre-init,-init-private,-init-user">
  <property file="nbproject/project.properties" />
  </target>
- <target name="-do-init" depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property">
  <available file="${manifest.file}" property="manifest.available" />
- <condition property="manifest.available+main.class">
- <and>
  <isset property="manifest.available" />
  <isset property="main.class" />
- <not>
  <equals arg1="${main.class}" arg2="" trim="true" />
  </not>
  </and>
  </condition>
- <condition property="have.tests">
- <or>
  <available file="${test.src.dir}" />
  </or>
  </condition>
- <condition property="netbeans.home+have.tests">
- <and>
  <isset property="netbeans.home" />
  <isset property="have.tests" />
  </and>
  </condition>
- <condition property="no.javadoc.preview">
  <isfalse value="${javadoc.preview}" />
  </condition>
  <property name="run.jvmargs" value="" />
  <property name="javac.compilerargs" value="" />
  <property name="work.dir" value="${basedir}" />
- <condition property="no.deps">
- <and>
  <istrue value="${no.dependencies}" />
  </and>
  </condition>
  </target>
- <target name="-post-init">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-init-check" depends="-pre-init,-init-private,-init-user,-init-project,-do-init">
  <fail unless="src.dir">Must set src.dir</fail>
  <fail unless="test.src.dir">Must set test.src.dir</fail>
  <fail unless="build.dir">Must set build.dir</fail>
  <fail unless="dist.dir">Must set dist.dir</fail>
  <fail unless="build.classes.dir">Must set build.classes.dir</fail>
  <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
  <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
  <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
  <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
  <fail unless="dist.jar">Must set dist.jar</fail>
  </target>
- <target name="-init-macrodef-property">
- <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
  <attribute name="name" />
  <attribute name="value" />
- <sequential>
  <property name="@{name}" value="${@{value}}" />
  </sequential>
  </macrodef>
  </target>
- <target name="-init-macrodef-javac">
- <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/2">
  <attribute name="srcdir" default="${src.dir}" />
  <attribute name="destdir" default="${build.classes.dir}" />
  <attribute name="classpath" default="${javac.classpath}" />
  <attribute name="debug" default="${javac.debug}" />
  <element name="customize" optional="true" />
- <sequential>
- <javac srcdir="@{srcdir}" destdir="@{destdir}" debug="@{debug}" deprecation="${javac.deprecation}" source="${javac.source}" target="${javac.target}" includeantruntime="false">
- <classpath>
  <path path="@{classpath}" />
  </classpath>
  <compilerarg line="${javac.compilerargs}" />
  <customize />
  </javac>
  </sequential>
  </macrodef>
  </target>
- <target name="-init-macrodef-junit">
- <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/2">
  <attribute name="includes" default="**/*Test.java" />
- <sequential>
- <junit showoutput="true" fork="true" dir="${basedir}" failureproperty="tests.failed" errorproperty="tests.failed">
- <batchtest todir="${build.test.results.dir}">
  <fileset dir="${test.src.dir}" includes="@{includes}" />
  </batchtest>
- <classpath>
  <path path="${run.test.classpath}" />
  </classpath>
- <syspropertyset>
  <propertyref prefix="test-sys-prop." />
  <mapper type="glob" from="test-sys-prop.*" to="*" />
  </syspropertyset>
  <formatter type="brief" usefile="false" />
  </junit>
  </sequential>
  </macrodef>
  </target>
- <target name="-init-macrodef-nbjpda">
- <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
  <attribute name="name" default="${main.class}" />
  <attribute name="classpath" default="${debug.classpath}" />
  <attribute name="stopclassname" default="" />
- <sequential>
- <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}">
- <classpath>
  <path path="@{classpath}" />
  </classpath>
  </nbjpdastart>
  </sequential>
  </macrodef>
- <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
  <attribute name="dir" default="${build.classes.dir}" />
- <sequential>
- <nbjpdareload>
  <fileset includes="${fix.includes}*.class" dir="@{dir}" />
  </nbjpdareload>
  </sequential>
  </macrodef>
  </target>
- <target name="-init-macrodef-debug">
- <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/2">
  <attribute name="classname" default="${main.class}" />
  <attribute name="classpath" default="${debug.classpath}" />
  <element name="customize" optional="true" />
- <sequential>
- <java fork="true" classname="@{classname}" dir="${work.dir}">
  <jvmarg value="-Xdebug" />
  <jvmarg value="-Xnoagent" />
  <jvmarg value="-Djava.compiler=none" />
  <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}" />
  <jvmarg line="${run.jvmargs}" />
- <classpath>
  <path path="@{classpath}" />
  </classpath>
- <syspropertyset>
  <propertyref prefix="run-sys-prop." />
  <mapper type="glob" from="run-sys-prop.*" to="*" />
  </syspropertyset>
  <customize />
  </java>
  </sequential>
  </macrodef>
  </target>
- <target name="-init-macrodef-java">
- <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
  <attribute name="classname" default="${main.class}" />
  <element name="customize" optional="true" />
- <sequential>
- <java fork="true" classname="@{classname}" dir="${work.dir}">
  <jvmarg line="${run.jvmargs}" />
- <classpath>
  <path path="${run.classpath}" />
  </classpath>
- <syspropertyset>
  <propertyref prefix="run-sys-prop." />
  <mapper type="glob" from="run-sys-prop.*" to="*" />
  </syspropertyset>
  <customize />
  </java>
  </sequential>
  </macrodef>
  </target>
- <target name="-init-presetdef-jar">
- <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
- <jar jarfile="${dist.jar}" compress="${jar.compress}">
  <j2seproject1:fileset dir="${build.classes.dir}" />
  </jar>
  </presetdef>
  </target>
  <target name="init" depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" />
- <!--     ===================
    COMPILATION SECTION
    ===================
   
  -->
  <target name="deps-jar" depends="init" unless="no.deps" />
- <target name="-pre-pre-compile" depends="init,deps-jar">
  <mkdir dir="${build.classes.dir}" />
  </target>
- <target name="-pre-compile">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-do-compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile">
  <j2seproject2:javac />
- <copy todir="${build.classes.dir}">
  <fileset dir="${src.dir}" excludes="${build.classes.excludes}" />
  </copy>
  </target>
- <target name="-post-compile">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="compile" depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." />
- <target name="-pre-compile-single">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-do-compile-single" depends="init,deps-jar,-pre-pre-compile">
  <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
- <j2seproject2:javac>
- <customize>
  <patternset includes="${javac.includes}" />
  </customize>
  </j2seproject2:javac>
  </target>
- <target name="-post-compile-single">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="compile-single" depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" />
- <!--     ====================
    JAR BUILDING SECTION
    ====================
   
  -->
- <target name="-pre-pre-jar" depends="init">
  <dirname property="dist.jar.dir" file="${dist.jar}" />
  <mkdir dir="${dist.jar.dir}" />
  </target>
- <target name="-pre-jar">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-do-jar-without-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" unless="manifest.available">
  <j2seproject1:jar />
  </target>
- <target name="-do-jar-with-manifest" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" unless="manifest.available+main.class">
  <j2seproject1:jar manifest="${manifest.file}" />
  </target>
- <target name="-do-jar-with-mainclass" depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class">
- <j2seproject1:jar manifest="${manifest.file}">
- <j2seproject1:manifest>
  <j2seproject1:attribute name="Main-Class" value="${main.class}" />
  </j2seproject1:manifest>
  </j2seproject1:jar>
  </target>
- <target name="-post-jar">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="jar" depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-post-jar" description="Build JAR." />
- <!--     =================
    EXECUTION SECTION
    =================
   
  -->
- <target name="run" depends="init,compile" description="Run a main class.">
- <j2seproject1:java>
- <customize>
  <arg line="${application.args}" />
  </customize>
  </j2seproject1:java>
  </target>
- <target name="run-single" depends="init,compile-single">
  <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
  <j2seproject1:java classname="${run.class}" />
  </target>
- <!--     =================
    DEBUGGING SECTION
    =================
   
  -->
- <target name="-debug-start-debugger" if="netbeans.home" depends="init">
  <j2seproject1:nbjpdastart name="${debug.class}" />
  </target>
- <target name="-debug-start-debuggee" depends="init,compile">
- <j2seproject2:debug>
- <customize>
  <arg line="${application.args}" />
  </customize>
  </j2seproject2:debug>
  </target>
  <target name="debug" if="netbeans.home" depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." />
- <target name="-debug-start-debugger-stepinto" if="netbeans.home" depends="init">
  <j2seproject1:nbjpdastart stopclassname="${main.class}" />
  </target>
  <target name="debug-stepinto" if="netbeans.home" depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" />
- <target name="-debug-start-debuggee-single" if="netbeans.home" depends="init,compile-single">
  <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
  <j2seproject2:debug classname="${debug.class}" />
  </target>
  <target name="debug-single" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" />
- <target name="-pre-debug-fix" depends="init">
  <fail unless="fix.includes">Must set fix.includes</fail>
  <property name="javac.includes" value="${fix.includes}.java" />
  </target>
- <target name="-do-debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,compile-single">
  <j2seproject1:nbjpdareload />
  </target>
  <target name="debug-fix" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix" />
- <!--     ===============
    JAVADOC SECTION
    ===============
   
  -->
- <target name="-javadoc-build" depends="init">
  <mkdir dir="${dist.javadoc.dir}" />
- <javadoc destdir="${dist.javadoc.dir}" source="${javac.source}" notree="${javadoc.notree}" use="${javadoc.use}" nonavbar="${javadoc.nonavbar}" noindex="${javadoc.noindex}" splitindex="${javadoc.splitindex}" author="${javadoc.author}" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}" private="${javadoc.private}" additionalparam="${javadoc.additionalparam}" failonerror="true">
- <classpath>
  <path path="${javac.classpath}" />
  </classpath>
- <sourcepath>
  <pathelement location="${src.dir}" />
  </sourcepath>
  <fileset dir="${src.dir}" />
  </javadoc>
  </target>
- <target name="-javadoc-browse" if="netbeans.home" unless="no.javadoc.preview" depends="init,-javadoc-build">
  <nbbrowse file="${dist.javadoc.dir}/index.html" />
  </target>
  <target name="javadoc" depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." />
- <!--     =========================
    JUNIT COMPILATION SECTION
    =========================
   
  -->
- <target name="-pre-pre-compile-test" if="have.tests" depends="init,compile">
  <mkdir dir="${build.test.classes.dir}" />
  </target>
- <target name="-pre-compile-test">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-do-compile-test" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test">
  <j2seproject2:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}" />
- <copy todir="${build.test.classes.dir}">
  <fileset dir="${test.src.dir}" excludes="**/*.java" />
  </copy>
  </target>
- <target name="-post-compile-test">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="compile-test" depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" />
- <target name="-pre-compile-test-single">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
- <target name="-do-compile-test-single" if="have.tests" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single">
  <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
- <j2seproject2:javac srcdir="${test.src.dir}" destdir="${build.test.classes.dir}" debug="true" classpath="${javac.test.classpath}">
- <customize>
  <patternset includes="${javac.includes}" />
  </customize>
  </j2seproject2:javac>
  </target>
- <target name="-post-compile-test-single">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="compile-test-single" depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" />
- <!--     =======================
    JUNIT EXECUTION SECTION
    =======================
   
  -->
- <target name="-pre-test-run" if="have.tests" depends="init">
  <mkdir dir="${build.test.results.dir}" />
  </target>
- <target name="-do-test-run" if="have.tests" depends="init,compile-test,-pre-test-run">
  <j2seproject2:junit />
  </target>
- <target name="-post-test-run" if="have.tests" depends="init,compile-test,-pre-test-run,-do-test-run">
  <fail if="tests.failed">Some tests failed; see details above.</fail>
  </target>
  <target name="test-report" if="have.tests" depends="init" />
  <target name="-test-browse" if="netbeans.home+have.tests" depends="init" />
  <target name="test" depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." />
- <target name="-pre-test-run-single" if="have.tests" depends="init">
  <mkdir dir="${build.test.results.dir}" />
  </target>
- <target name="-do-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single">
  <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
  <j2seproject2:junit includes="${test.includes}" />
  </target>
- <target name="-post-test-run-single" if="have.tests" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single">
  <fail if="tests.failed">Some tests failed; see details above.</fail>
  </target>
  <target name="test-single" depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." />
- <!--     =======================
    JUNIT DEBUGGING SECTION
    =======================
   
  -->
- <target name="-debug-start-debuggee-test" if="have.tests" depends="init,compile-test">
  <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
- <j2seproject2:debug classname="junit.textui.TestRunner" classpath="${debug.test.classpath}">
- <customize>
  <arg line="${test.class}" />
  </customize>
  </j2seproject2:debug>
  </target>
- <target name="-debug-start-debugger-test" if="netbeans.home+have.tests" depends="init,compile-test">
  <j2seproject1:nbjpdastart name="${test.class}" classpath="${debug.test.classpath}" />
  </target>
  <target name="debug-test" depends="init,compile-test,-debug-start-debugger-test,-debug-start-debuggee-test" />
- <target name="-do-debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,compile-test-single">
  <j2seproject1:nbjpdareload dir="${build.test.classes.dir}" />
  </target>
  <target name="debug-fix-test" if="netbeans.home" depends="init,-pre-debug-fix,-do-debug-fix-test" />
- <!--     =========================
    APPLET EXECUTION SECTION
    =========================
   
  -->
- <target name="run-applet" depends="init,compile-single">
  <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
- <j2seproject1:java classname="sun.applet.AppletViewer">
- <customize>
  <arg value="${applet.url}" />
  </customize>
  </j2seproject1:java>
  </target>
- <!--     =========================
    APPLET DEBUGGING  SECTION
    =========================
   
  -->
- <target name="-debug-start-debuggee-applet" if="netbeans.home" depends="init,compile-single">
  <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
- <j2seproject2:debug classname="sun.applet.AppletViewer">
- <customize>
  <arg value="${applet.url}" />
  </customize>
  </j2seproject2:debug>
  </target>
  <target name="debug-applet" if="netbeans.home" depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" />
- <!--     ===============
    CLEANUP SECTION
    ===============
   
  -->
  <target name="deps-clean" depends="init" unless="no.deps" />
- <target name="-do-clean" depends="init">
  <delete dir="${build.dir}" />
  <delete dir="${dist.dir}" />
  </target>
- <target name="-post-clean">
- <!--  Empty placeholder for easier customization.
  -->
- <!--  You can override this target in the ../build.xml file.
  -->
  </target>
  <target name="clean" depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." />
  </project>

Author

Commented:
is it useful?
side track: where can i learn about XML? i see everyone talking and mentioning it....
zzynxSr. Software engineer

Commented:
>> ... and i add them into my project.
That's the magic that does it in NetBeans ;°)

Author

Commented:
>>That's the magic that does it in NetBeans

yea, that's one of the reason i like to use NetBean. and i never encounter such problem before this...
now i just hope nothing like this will happen to JFreeReport...

for everybody's info, when i print out System.getProperty("java.class.path")

C:\Documents and Settings\abc\app\dist\app.jar;C:\Documents and Settings\abc\app\thirdparty\synthetica.jar;C:\Documents and Settings\abc\app\thirdparty\liquidlnf.jar;C:\Documents and Settings\abc\app\thirdparty\napkinlaf.jar;C:\Documents and Settings\abc\app\properties;C:\Documents and Settings\abc\app\build\classes
Top Expert 2016

Commented:
Oh dear, i was hoping you'd just post the one target essentially ;-)

Author

Commented:
;p

i don't know which one is important.... sorry bout that, CEHJ
Top Expert 2016
Commented:
From what i can tell, any jar being produced is being done without a contained classpath via a manfest, which is why it may fail when run.
I was hoping to see a run target that set this, but can't find one. If you reproduce the classpath you just posted though, you should be OK when you run the jar, as long
as you do so without the -jar argument

Author

Commented:
after some thought, i think i am going to create the JAR file myself by providing my own manifest file. but which way is better: put everything, including these look and feel jar files, into my jar? OR set the Class-Path in the manifest?
Commented:
> after some thought, i think i am going to create the JAR file myself by providing my own manifest file
Its much better to create your own jar file yourself rather than just depending on an ide, my experience in netbeans is that everytime that there is an error or error log its really hard
to find an easy solution to it never the less its a good ide, you can also try using eclipse it has a strong capability in creating builds for jar files.

> but which way is better: put everything, including these look and feel jar files, into my jar?
I'd go for including them in your jar so that everything is there already.

Author

Commented:
Javatm:
i chose to use NetBeans because of its capability to drag and draw the GUI. since i prefer GragBagLayout, i find it much easier to design on this feature and see the immediate result.
i heard lot of ppl bout eclipse but i never tried it.
does eclipse has the drag and draw feature? just for my knowledge..

Commented:
Yes it does have that infact it has its own project for that:
http://www.eclipse.org/vep/

Here is a detail tutorial:
http://www-128.ibm.com/developerworks/opensource/library/os-ecvisual/

Its a plugin so if you decide to use it you need to extract the contents and place them all in eclipse/plugin folder.

Hope that helps . . .
Javatm

Commented:
I you ask me what I use, I use both since I love them both. =)
I use netbeans for jsp/ejb/gui while eclipse for collection classes/gui/swt.

Author

Commented:
ok guys, guess it's time for me to close this question.. been dragging for too long.

Thanks CEHJ, zzynx, and Javatm for your help ;)

Commented:
;) No problem dude anytime !
zzynxSr. Software engineer

Commented:
My pleasure. Thanks
Top Expert 2016

Commented:
:-)
check your build.xml
first you have to decide if you want to compile the jars into your jar or if you want to deliver them with your jar for the second see lower example:
netbeans generates from this scratch its build-impl.xml, so any changes made to build.xml will take effect to the jar.

enter all needed jars to the main section of build.xml

e.g.
<project name="epos" default="default" basedir=".">
<path id="classpath">
   <pathelement location="classes"/>
   <fileset dir="lib">
      <include name="**/*.jar"/>
   </fileset>

.....
and then name em in your autogenerated manifest file
<target name="jar" depends....

   <manifest>
      <attribute> name="Class-Path" value="myfirst.jar mysecond.jar mythird.jar"
   </manifest>
</target>

Author

Commented:
mightyone>> mind to let me know more bout this if i open a new question on NetBeans topic?
no but maybe set link to the new question here as i am only spoeadecally online

Author

Commented:
ok ;)

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial