• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Eclipse not building new class files
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Eclipse not building new class files


  • Subject: Eclipse not building new class files
  • From: Jeffrey Schmitz <email@hidden>
  • Date: Sun, 15 Jun 2014 19:32:16 -0500

Hello List,
   This happens from time to time and I'd like to understand what's going on.  When I change a java class in Eclipse, the compiler understands the changes, flags errors correctly, and lets me navigate through the new code.  However, when I run my app via the debug menu, it acts like the changes were never made, and I notice that the class files in my project's build directory (bin) don't get updated.  If I try a clean at this point, I then can no longer run my app as I get the Class Main is undefined error (see below), which makes sense since my bin folder is empty.  And finally, I do have my project set to build automatically.

Any help tracking this down the real cause of this would be greatly appreciated as this has been a major pain in the neck over the years...

Exception in thread "main" java.lang.NoClassDefFoundError: com/netbrackets/app/Application
Caused by: java.lang.ClassNotFoundException: com.netbrackets.app.Application
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)


My build.properties files looks like:

classes.dir=bin
component.inlineBindingPrefix=$
component.inlineBindingSuffix=
component.wellFormedTemplateRequired=false
customInfoPListContent=
principalClass=com.netbrackets.app.Application
project.name=netBrackets
project.name.lowercase=netbrackets
project.type=application
webXML=false
webXML_CustomContent=
wolips.properties=/Developer/WebObjects/Versions/WebObjects543/wolips.543.properties

My wolips.543.properties is:

wo.api.root=
wo.apps.root=/Developer/WebObjects/Versions/WebObjects543/Library/WebObjects/Applications
wo.bootstrapjar=/Developer/WebObjects/Versions/WebObjects543/System/Library/WebObjects/JavaApplications/wotaskd.woa/WOBootstrap.jar
wo.extensions=/Developer/WebObjects/Versions/WebObjects543/Library/WebObjects/Extensions
wo.local.frameworks=/Developer/WebObjects/Versions/WebObjects543/Library/Frameworks
wo.local.root=/Developer/WebObjects/Versions/WebObjects543
wo.network.frameworks=
wo.network.root=/Network
wo.system.frameworks=/Developer/WebObjects/Versions/WebObjects543/System/Library/Frameworks
wo.system.root=/Developer/WebObjects/Versions/WebObjects543/System
wo.user.frameworks=/Users/netBrackets/Library/Frameworks
wo.user.root=/Users/netBrackets
wolips.properties=/Developer/WebObjects/versions/WebObjects543/wolips.543.properties


And just for good measure, my build.xml looks like:

<project name="netBrackets" default="build" basedir=".">
<target name="build" depends="init.build,build.woapp,javaclient,ssdd,war,split,package" />

<target name="install" depends="init.install,build.woapp,javaclient,ssdd,war,split,package" />

<target name="clean" depends="init.properties">
<delete dir="bin" />
<delete dir="dist" />
</target>

<!-- basic initializations  -->
<target name="init.install" depends="init.properties">
<tstamp />
<property name="dest.dir" value="${wo.apps.root}" />
</target>

<target name="init.build" depends="init.properties">
<tstamp />
<property name="dest.dir" value="dist" />
</target>


<!-- property determination  -->
<target name="init.properties">
<property file="build.properties" />

<property name="wolips.properties" value="${user.home}${file.separator}Library${file.separator}Application Support${file.separator}WOLips${file.separator}wolips.properties" />
<property file="${wolips.properties}" />
<condition property="wo.properties.check.failed">
<not>
<and>
<isset property="wo.system.frameworks" />
<isset property="wo.local.frameworks" />
</and>
</not>
</condition>
<fail message="The properties 'wo.system.frameworks' and 'wo.local.frameworks' must be set. Check that your ${wolips.properties} is correct." if="wo.properties.check.failed" />

<property name="build.app.name" value="${project.name}" />
<property name="build.app.name.lowercase" value="${project.name.lowercase}" />
</target>

<!-- This copies webserver resources from app.woa's embedded frameworks into split install bundle -->
<target name="split" description="Adds embedded framework webserver resources to the split install bundle by copying from deployment build bundle" unless="servletDeployment">
<property name="wsdest.dir" value="${dest.dir}/Split" />
<mkdir dir="${wsdest.dir}"/>
<copy todir="${wsdest.dir}/WebObjects/${build.app.name}.woa" verbose="true">
<fileset dir="${dest.dir}/${build.app.name}.woa/Contents">
<include name="Frameworks/*.framework/WebServerResources/**"/>
</fileset>
<fileset dir="${dest.dir}/${build.app.name}.woa">
<include name="Contents/WebServerResources/**"/>
</fileset>
</copy>
</target>

  <target name="package" unless="servletDeployment">
    <tar destfile="${dest.dir}/${build.app.name}-Application.tar.gz"
        compression="gzip"
        longfile="gnu">
      <tarfileset dir="${dest.dir}" mode="750">
        <include name="${build.app.name}.woa/${build.app.name}"/>
      </tarfileset>
      <tarfileset dir="${dest.dir}">
        <exclude name="${build.app.name}.woa/${build.app.name}"/>
        <include name="${build.app.name}.woa/**"/>
      </tarfileset>
    </tar>
    <tar destfile="${dest.dir}/${build.app.name}-WebServerResources.tar.gz"
        compression="gzip"
        basedir="${wsdest.dir}/WebObjects"
        longfile="gnu"
        includes="${build.app.name}.woa/**">
    </tar>
</target>

<!-- woproject tasks -->
<target name="build.woapp" depends="compile">
<taskdef name="woapplication" classname="org.objectstyle.woproject.ant.WOApplication"/>

<woapplication name="${build.app.name}" frameworksBaseURL="/WebObjects/Frameworks" destDir="${dest.dir}" customInfoPListContent="${customInfoPListContent}" principalClass="${principalClass}" webXML="${webXML}" webXML_CustomContent="${webXML_CustomContent}" servletAdaptor="er.extensions.jspservlet.ERXServletAdaptor">
<classes dir="${classes.dir}">
<includesfile name="woproject/classes.include.patternset" />
<excludesfile name="woproject/classes.exclude.patternset" />
        <exclude if="javaClient" name="**/client/**/*.*"/>
</classes>

<wsresources dir=".">
<includesfile name="woproject/wsresources.include.patternset" />
<excludesfile name="woproject/wsresources.exclude.patternset" />
</wsresources>

<resources dir=".">
<includesfile name="woproject/resources.include.patternset" />
<excludesfile name="woproject/resources.exclude.patternset" />
        <exclude if="javaClient" name="**/client/**/*.*"/>
</resources>

<frameworks root="ProjectLocal" embed="${embed.ProjectLocal}" eclipse="true" />
<frameworks root="External" embed="${embed.External}" eclipse="true" />
<frameworks root="Local" embed="${embed.Local}" eclipse="true" />
<frameworks root="User" embed="${embed.User}" eclipse="true" />
<frameworks root="System" embed="${embed.System}" eclipse="true" />
<frameworks root="Network" embed="${embed.Network}" eclipse="true" />

<lib dir="Libraries">
<include name="*.jar" />
</lib>
</woapplication>
</target>


<target name="javaclient" if="javaClient" depends="build.woapp">
<mkdir dir="${dest.dir}/${build.app.name}.woa/Contents/WebServerResources/Java" />
<jar basedir="${classes.dir}" excludes="**/server/**/*.*, **/server/**/" jarfile="${dest.dir}/${build.app.name}.woa/Contents/WebServerResources/Java/${build.app.name}.jar"/>
</target>

<target name="war" if="servletDeployment" depends="ssdd">
<war destfile="${dest.dir}/${build.app.name}.war" webxml="${dest.dir}/${build.app.name}/WEB-INF/web.xml">
<fileset dir="${dest.dir}/${build.app.name}">
<include name="**" />
</fileset>
</war>
</target>

<!-- To use this target
    1) create the LICENSE in your project directory
    2) add JavaWOJSPServlet in your WOFrameworks build path
    3) set servlet deployment to true in WOLips Properties
    -->
<target name="ssdd" if="servletDeployment" depends="build.woapp">
<mkdir dir="${dest.dir}/${build.app.name}/WEB-INF/classes" />
<mkdir dir="${dest.dir}/${build.app.name}/WEB-INF/tlds" />
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/">
<fileset dir="${dest.dir}/${build.app.name}.woa/Contents/">
<include name="web.xml" />
</fileset>
</copy>
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/">
<fileset dir="..">
<include name="LICENSE" />
</fileset>
</copy>
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/">
<fileset dir="${dest.dir}">
<include name="${build.app.name}.woa/**" />
</fileset>
</copy>
<!-- copy the frameworks to the WEBINFROOT/Library directory -->
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/">
<fileset dir="${dest.dir}/${build.app.name}.woa/Contents">
<include name="Library/**" />
</fileset>
</copy>
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/">
<fileset dir="${dest.dir}/${build.app.name}.woa">
<include name="Resources/**" />
</fileset>
</copy>
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/lib/">
<fileset dir="${dest.dir}/${build.app.name}/WEB-INF">
<include name="**/Resources/**/*.jar" />
</fileset>
<mapper type="flatten" />
</copy>

<!--  Get the necessary Frameworks from the webobjects system root instead of the project wrapper -->
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/lib" file="${wo.system.frameworks}/JavaWOJSPServlet.framework/WebServerResources/Java/JavaWOJSPServlet_client.jar" />

<copy todir="${dest.dir}/${build.app.name}/WEB-INF/tlds">
<fileset dir="${wo.system.frameworks}/JavaWOJSPServlet.framework/Resources/">
<include name="WOtaglib_1_0.tld" />
</fileset>
</copy>

<!-- the WebObject Extensions -->
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/lib">
<fileset dir="${wo.extensions}">
<include name="*.jar" />
<exclude name="servlet.jar" />
</fileset>
<mapper type="flatten" />
</copy>


<!-- the Java Client Client-Side Classes   -->
<copy todir="${dest.dir}/${build.app.name}/WEB-INF/${build.app.name}.woa/Contents/WebServerResources/Java">
<fileset dir="${wo.local.frameworks}"> 
<include name="**/WebServerResources/Java/*.jar"/> 
</fileset> 
<mapper type="flatten"/>
</copy>


<!-- fix the Macos*ClassPath.txt files  -->
<replaceregexp file="${dest.dir}/${build.app.name}/WEB-INF/${build.app.name}.woa/Contents/MacOS/MacOSClassPath.txt" match="APPROOT/Resources/Java/${build.app.name.lowercase}.jar" replace="APPROOT/${build.app.name}.woa/Contents/Resources/Java/${build.app.name.lowercase}.jar" byline="true" />
<replaceregexp file="${dest.dir}/${build.app.name}/WEB-INF/${build.app.name}.woa/Contents/MacOS/MacOSXServerClassPath.txt" match="APPROOT/Resources/Java/${build.app.name.lowercase}.jar" replace="APPROOT/${build.app.name}.woa/Contents/Resources/Java/${build.app.name.lowercase}.jar" byline="true" />

<!-- fix the web.xml file:  the app itself needs build.app.name/Contents -->
<replaceregexp file="${dest.dir}/${build.app.name}/WEB-INF/web.xml" match="WEBINFROOT/Resources/Java/${build.app.name.lowercase}.jar" replace="WEBINFROOT/${build.app.name}.woa/Contents/Resources/Java/${build.app.name.lowercase}.jar" byline="true" />

<!-- fix the web.xml file to remove the extra Frameworks/ directory level for the frameworks -->
<replaceregexp file="${dest.dir}/${build.app.name}/WEB-INF/web.xml" match="WEBINFROOT/Frameworks//" replace="WEBINFROOT/" byline="true" />
</target>

<target name="compile" depends="init.properties">
<taskdef name="wocompile" classname="org.objectstyle.woproject.ant.WOCompile" />

<mkdir dir="bin" />
<wocompile srcdir="Sources" destdir="bin">
<frameworks root="ProjectLocal" embed="false" eclipse="true" />
<frameworks root="External" embed="false" eclipse="true" />
<frameworks root="Local" embed="false" eclipse="true" />
<frameworks root="User" embed="false" eclipse="true" />
<frameworks root="System" embed="false" eclipse="true" />
<frameworks root="Network" embed="false" eclipse="true" />
<classpath>
<fileset dir="Libraries">
<include name="*.jar" />
</fileset>
<fileset dir="${wo.extensions}">
<include name="*.jar" />
</fileset>
</classpath>
</wocompile>
</target>
</project>


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Eclipse not building new class files
      • From: Jeffrey Schmitz <email@hidden>
  • Prev by Date: On TreasureBoat
  • Next by Date: Re: Eclipse not building new class files
  • Previous by thread: Re: On TreasureBoat
  • Next by thread: Re: Eclipse not building new class files
  • Index(es):
    • Date
    • Thread