A minor complaint

I’m hoping they changed it Notes 9, but in the 8.5.3 Domino Designer, it annoys me continually that when there is a problem with a Build, it is only noted in the Problems pane. There’s a popup to show you the progress of cleaning and of building, but when the truly important item, any errors in the build, is displayed to the client, it’s done discretely. I know I ought to have that view open so that I can see it, but it just strikes me as such an oversight to do all this dramatic progress bar stuff and then put the results of the build off in a quiet little sector. Why can’t we just get a stupid popup that says “Build complete with x errors”?

Sorry, but it’s been bothering me (nearly as much as the labeling of the rendered property as “visible”).

Categories: IDE | Tags: | Leave a comment

Java still not refreshing correctly in #XPages 8.5.3 UP 1

You know, I had started on a post on the great power of comparing design elements, but all I’d written so far was:

With the move to an Eclipse-based Domino Designer Environment, there was at least one significant improvement – the native ability to compare design elements.

I was a big fan of TeamStudio‘s Delta, since I often needed to compare versions of my designs either to document the changes I’d made or, in rare circumstances, do a little troubleshooting to see where I’d accidentally screwed up my designs. It was a great tool, with a lot of smarts about how to report on the designs and it even allowed you to compare documents. They have, of course, updated Delta to provide more capability than is native in Notes – allowing graphical display of design differences rather than just code variances. That said, I don’t have a current license, so I’m using the native tools.

In one of my hotter posts, I’d noted that Java is not behaving well in my environment. The basic behavior is that I’d make changes to my template, do a build and then, when I refreshed the design on the server, things would not refresh properly in Java. In the last few days, the behavior has become very consistent. For some reason, it plagues Mark Leusink‘s DebugToolbar, which is an excellent tool that works fine when my environment behaves.

Basically, the end-user experience of the problem was that, every once in a while, without code changes to the DebugToolbar, I’d start getting Error 500’s that it could not find that class. So, I started to get in the habit of checking in the WebContent/WEB-INF/classes folders using the Navigator view in my designer client to see if the classes were all there.

When builds worked, it would create the DebugToolbar and Message classes, plus the three private classes within DebugToolbar (FieldComparable, FileInfo and MethodComparable). When things didn’t work, sometimes it wouldn’t create the two main classes. Refreshing the design on the server again would never repair it. It would often create 2 or 3 additional copies of each of the private classes, appending what looks like a UNID to the class name. Those tend to have file sizes like -1kb.

Bad Class List

This started in August, as I was making changes to some other Java files. I never changed DebugToolbar, but it would often get corrupted. It settled down as my Java changes ended. I went on vacation for two weeks (Avignon!) and returned to a stable environment. Of course, no one had touched the Java while I was gone and I saw no need until a few weeks ago to make any changes myself.

Now, I had also updated to v3.01 of the DebugToolbar and moved all my Java files into Code/Java from the WebContent/WEB-INF/src folder so that access to them was simpler. However, having been back and forth between versions and back and forth with where the code was stored, I think I can eliminate those as independent problem sources.

Nonetheless, I can consistently see the extra classes and error 500s every time I refresh the design. Deleting the bad classes doesn’t solve anything. Replacing all the class files with the ones from the template also doesn’t work.

If I build the database on the server, the problem goes away.

I’ve been getting frustrated. This might work for me if I’m the only one who makes changes, since the Bethesda server is always a few short hops from me. However, as I may have mentioned before, I work for a very global-oriented company and sometimes our developers are out at project sites where connectivity is slow on good days. Quite frankly, doing a build on the Bethesda server while sitting in Jalalabad is never going to finish in an acceptable time frame. One can build a local template quickly and refresh design far faster.

Fortunately, today I got a new clue.dojo complaint

I started to wonder about corrupt files or problems with the server. So, I created a completely blank file and applied my template (which showed the 5 class files, named normally) to that file. The class files get all corrupted. So, I created a blank file and built as a template from my template. It got corrupt files and also didn’t work as template after building (the same result in the class files). Then, I decided to copy over design elements ad paste them into a blank file. I did a build and got some errors because I’d forgotten to copy over all the libraries and other files hidden under WEB-INF. So, I decided to compare the two databases so I could see what I needed to copy still. Then, I looked at the Java files produced by the XPage builds, just it showed up in the differences between the files and I was shocked. The design on the one I was ‘creating from scratch’ showed all kinds of old versions.

In each of the ‘old’ builds, the Java file created for the XPage would have super(“8.5.3”); but, as shown above, my cut-and-paste built ones would have various complaints, naming other versions and usually with a comment on why. The different line displayed would usually be one of the following:


super("8.5.2"); // version of xp:view dojoForm

super("8.5.2"); // version of xp:eventHandler disableValidators

super("8.5.1"); // version of xp:eventHandler script

I’d never have noticed if I wasn’t using Compare To Each Other. Now, I need to reinstall Notes and see if the problem goes away or continues. I had Ariwan try and it only worked once for him – and I had to rebuild it on the server – so my hopes are not real high. Since Eric Tomenga has submitted a PMR on the issue, we’re hoping some IBM minds add to my few readers in trying to puzzle out why this is happening.


Categories: IDE, Java, Utilities, Xpages | Tags: , , , , , , , , , | 3 Comments

Java still vexing me in #xpages

So, as I noted in my last post about Java in XPages, things have not been smooth for me. Updates to my Java class files don’t always seem to work.

I’ve got a database that’s called Shared Resources and contains mostly XPages and configuration documents for our project. Data is stored in Main, workflow configuration and tracking goes into Workflow, and Attachments is self-explanatory. Our intention is that this will be mostly used via XPiNC, since many laptops will be in remote locations without server access.

I’m using templates, creating new ones incrementally so I don’t lose any of my intermediate changes, plus creating roll-backs in case changes snuck in somehow. I’ve got my own ID and a Development Admin ID that I use for signing. The Development Admin ID is required for the production servers, so it’s possible that signing issues have been a part of the problem. I have three database suites that I push the design to, two of those being on my development server (my Sandbox and our test copy) and the third being in production (but not yet even as a pilot, just validation testing in that environment).

I’m not currently changing any code, but trying to determine whether having custom Java code in 8.5.3 can work in either Code/Java or WebComponents/WEB-INF/src and finding that it doesn’t seem to matter. It seems to fail in either place almost at random. I know there must be a pattern, but I have had difficulty finding that pattern and need some help.

So, steps that I have followed….

  1. Clean & Build on template
  2. Refresh design of production database
  3. Marvel at failure of DebugToolbar or partial succcess (load first page, but not requisition page) or complete success on XPiNC (with complete or partial failure in IE)
  1. Clean & Build on local replica of production database
  2. Replicate with server
  3. Marvel at over-write of class files on local from server
  1. Clean & Build on server (go walk dog, practice French in Pimsleur, or contemplate fine wines)
  2. Restart Notes client since it will have cached the XPages
  3. Usually marvel at success but agonize over the idea of knocking everyone off the database while I build
Error while executing JavaScript action expression
javax.faces.FacesException: Can't instantiate class: 'eu.linqed.debugtoolbar.DebugToolbar'.. java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: eu.linqed.debugtoolbar.DebugToolbar
Can't instantiate class: 'eu.linqed.debugtoolbar.DebugToolbar'.. java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: eu.linqed.debugtoolbar.DebugToolbar
java.lang.ClassNotFoundException: class java.lang.ClassNotFoundException: eu.linqed.debugtoolbar.DebugToolbar
class java.lang.ClassNotFoundException: eu.linqed.debugtoolbar.DebugToolbar


   1: #{javascript:if (typeof dBar != "undefined") {
   2: 	dBar.init(compositeData.defaultCollapsed, compositeData.toolbarColor);
   3: }}

It does seem almost random. Since it sometimes works, I know it’s not a problem with the code that is in the files. I know from Stack Overflow links in the last post that Java residing in Code/Java does not always behave, but I seem to have problems in both locations. There are few people who do have designer rights to the database, but they’ve all been staying out of it in Designer since I started reporting problems. We all have de-selected Build Automatically, but some registration of components seems to occur if I open the production database in Designer using my personal ID. I don’t know if that is adding to the problem or not.

I’ve read some people suggest that the problem goes away in Notes 9, but since it shouldn’t have been there in 8.5.3, I don’t know if I should believe that. I also would rather not toss the additional variable of moving to Notes 9 in when we think we’re less than a month from a pilot deployment.

Right now, it works in XPiNC and IE in both of my development instances, and in XPiNC in production, but fails in browsers there. I leave for two weeks in the south of France on Thursday and they can’t really cope with something that breaks for no apparent reason while I’m gone.

Categories: IDE, Java, Xpages | Tags: , , , | 11 Comments

Puzzling behaviour of Java class files in design refreshes in #xpages

This is not a post in which I’m able to dispense some knowledge I’ve gained, but, rather, one in which I share my befuddlement by some of the new things I’m dealing with in XPages.

We have a database suite originally designed for us by Scott Good, Henry Newberry and the good folks at Teamwork Solutions. It’s based off their brilliant Process It! workflow Notes solution. In the original design, they used version 1.3 of Mark Leusink’s Debug Toolbar. Since version 3.01 is now available on OpenNTF, I decided to upgrade. One of the advantages of the upgrade is that now the code resides in Code/Java, accessible more directly from the Designer client than it was when it had to be stored in WebContent/WEB-INF/src. For me, this is far more convenient, since I can see more properties directly (especially about prohibiting design refresh).

Nonetheless, I seem to be having troubles.

I updated the design, then did a clean and a build on my template. Then, I refreshed design on the server copy from the template. At first, it seemed like it wouldn’t bring the built .class files over to the server copy from my template. Now, when I do a design refresh, it “horks” the five files, reducing them all to -1 bytes. If I do a clean & build on the server copy, the files get their expected size.

I believe my classpath is correct, as it builds them properly when I tell it to build in either the template or on the server.

<?xml version="1.0" encoding="UTF-8"?>
<classpathentry kind="src" path="Local"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
<classpathentry kind="src" path="Code/Java"/>

In the ACL, this ID has Manager rights, including for creating LotusScript and Java agents. I’ve signed all the files in Code/Java with this ID. I build it with this ID. I conduct the design refresh with the same ID and those same rights.

Does anyone have any ideas what I might be doing wrong that’s inhibiting the class files from refreshing with the rest of the design?

There are two Stack Overflow questions that deal with this directly:

Class files not being created after refresh from template?

XPages Java corruption issue

One of my co-workers did open the design to check the binding for one field, which must have corrupted the files once. That doesn’t explain all the instances, but it helps. This straddles the line between a reason to use templates (so no one even glances at the design in production) and reason not to use templates (because it’s forced me to do builds on production since template changes only produce corrupt class files). Interestingly, it’s only the Debug Toolbar class files that have the problem – the Teamwork Solution ones haven’t corrupted.

Update: It gets worse. I tried building on the local replica so that I could do it quickly, then replicate the class files up to the server. No luck. It overwrites the local files with the corrupted ones from the server.

Categories: IDE, Java, Utilities, Xpages | Tags: , , , , , , | 3 Comments

Closing Unrelated Projects

When I first started trying to figure out XPages, I had all the default settings and I didn’t fiddle with them. I didn’t know what any of them were for and I still spend most of my time figuring out how to design things rather than how to handle my development environment, but, I am learning.

The first change I made was recommended by the folks over at Teamwork SolutioBuildAutomaticallyns, who’ve done some marvelous work on getting our main project rolling. They let me know that leaving the default setting of Build Automatically in the Project menu was a recipe for disaster in a multi-developer environment. I think it’s a bad thing even in a single-developer environment, because it constantly rebuilds your database, slowing down the design process as you wait for your CPU to catch up. If multiple developers are working in a single database, it’s likely to do a build in the middle of someone else’s work, screwing everything up. Of course, in any environment outside of Notes, builds and change control are a far more organized and normal process than we’ve dealt with. By making your builds only occur by conscious decision, you also move in the direction of all those other development environments. (Especially useful in preparing oneself for the inevitable technology and career changes that are normal for developers.)

CleanChoicesSo, on recommendation, I started always doing a Clean and then building just my specific database. Unfortunately, over the course of a day, like any normal Notes developer, I worked on several databases. Sometimes, these were completely unrelated. Why is this unfortunate? Well, my Clean & Build list got sloppy and crowded. Sometimes, in order to make my list look cleaner, I’d close my Designer client and restart it. I knew there was a way to clean up the list without doing that, but it was easy.

Now, I would think that having all those projects open would eat up memory and that removing them would somehow free up memory. Heck, I even thought that closing the Designer client would free up memory. It doesn’t appear to do so, but that might just be the random and anecdotal nature of my “testing”.

Nonetheless, I wanted a cleaner list, so I fiddled around and, I found what I was looking for. CloseUnrelatedProjectsIf you use the Navigator view in your Designer’s Eclipse perspective, you can right-click on the one database you actually want to appear in your Clean & Build dialog, then down toward the bottom choose Close Unrelated Projects. Then, your list looks nice and neat. I wish I could say this speeds processing or limits memory use, but the only performance increase I’ve seen is the change to the dialog box. Hopefully, Notes 9 will provide better memory management in this regard, but even if it does not, my need for a neater workspace will compel me to use this process.

I’d appreciate your thoughts and comments on this, especially if you’ve any speculation or data on performance improvement using this.

Oops! I forgot to mention the biggest reason for closing projects – Search. If you use <ctrl-H> to search your design elements for a string (which I do pretty often) then it will search all open projects. If you have several open projects you’re not working on, you get a lot of extraneous results and it takes far longer to complete. Closing those unrelated projects eliminates the wasted time.

Categories: IDE | Tags: , , , | 2 Comments

Set Prohibit Design Refresh

One thing about taking the Notes development exams was that it forced me to explore the obscure parts of Notes development.

I took my first Notes application development exam so long ago, the date isn’t even on my resume (R4 in about 1997 or so), then took each update exam through R7 to maintain my certification as a “Professional” or an “Advanced Application Developer”. I also wrote the questions for Brainbench’s R5 Notes application development exam (and some of the R6 exam, which I’m not sure if they ever released). So, I was forced to learn all the new wrinkles in each new release.

For fun, I used my free exam at the recent Lotusphere Connect conference to sample the LotusScript exam. I decided on the last day to take it, then failed by just one question with no preparation. It was a tough exam, delving into parts of LotusScript I’ve never used, but which provide new capabilities.

I’ve always found that Notes has more capability than I thought it did. As a junior developer, I would sometimes think that something simply couldn’t be done in Notes, then, after working on it for a while, exploring and stretching my knowledge, finding that not only could it be done, but that I was able to do it myself. So, while there are, in fact, things that Notes cannot do and things that Notes is not the best tool to do, I never say “It can’t be done” any more.

Set Prohibit Design RefreshBecause of the exposure forced by those exams, I often knew of capabilities, even if I had not exploited them. Hopefully, blogging XPages is going to force me to explore the obscure as well.

Today, I was clicking around, refreshing a design with some changes I’d made and I noticed something I had not seen before. On the menus, under File – Application, I saw down near the bottom “Set Prohibit Design Refresh…” I don’t know when that started appearing, but it practically jumped off the screen at me.

I’d been impressed when I realized I could change that property on multiple design elements of the same type in the work pane, but it’s terrific to be able to do it across the entire database so quickly and easily.

I think it would be a nice upgrade to that capability to allow the application of a specific template at that level, selecting a collection of design elements quickly there. In our of our main designs, there are a variety of modules used in each similar database and one database can have elements from three or four templates. If I take several design elements and move them into a “module template”, it would be nice to use this kind of dialog to retro-fit the databases to pull from the new module template going forward. Of course, I’m sure someone could design a utility to do that, but I think it would be nice to see in the basic designer client. What do all y’all think?

Categories: IDE | Tags: | 1 Comment

Blog at

%d bloggers like this: