Moving a Java project between Eclipse installations
The quickest way I have found of moving a Java project from one Eclipse installation to another.
(I am using Eclipse 3.4.1)
1. Copy the directory from your source Workspace to your target Workspace.
2. Remove the .classpath and .project files from the target. (These will be regenerated by Eclipse).
3. In your target installation of Eclipse go to File->New->Java Project
4. Enter a project name and click the ‘Create project from existing source’. radio button
5. Browse to your target directory in Workspace, click ‘Finish’
6. In your target Eclipse go to Project->Properties , select Java Build Path
7. Assuming you have copied over all jars that you are using, refer to your source installation of Eclipse Project->Properties->Java Build Path, Libraries tab and add all your jars.
8. (Target Eclipse) Project->Build Project and it should build.
Optional – Defining the output directory of your class files.
9. (Target Eclipse) Project->Properties->Java Build Path, Source, Browse button
10. Click ‘Create New Folder’, specify Folder name (this can be anything), click ‘Advanced’
11. Tick ‘Link to folder in the file system’, browse to output folder (usually WEB-INF/classes)
12. Click, ok, ok, ok.
The next time you build – your classes should be compiled into your chosen output directory.
If you know of a quicker/better way – let me know!
Mark B
Configuring Apache with Tomcat on OSX Leopard
Note that to start serving Java and run Java based web applications it is not essential to use Apache. Tomcat is a perfectly good http server and is even used by many in a production environment, however it is more common to separate concerns, leaving Apache to deal with the serving of static pages and Tomcat to deal with any application logic. This set up can also more easily facilitate load-balancing. Add to this the increasing popularity of using Apache’s .htaccess files to transform querystrings to more search engine readable URLs and you might find yourself with compelling reasons to get Apache and Tomcat talking.
For those interested in the debate – Do I still need Apache Httpd? is worth a read.
You will need to have Tomcat already installed – fortunately there are already various excellent tutorials on how to do this scattered around the web.
To start with, it may be worth detailing where the various parts of the pre-installed Apache system are in OSX.
(I’m running Mac OS X Version 10.5.6 – Leopard)
Web root (htdocs) : |
/Library/Webserver/Documents |
Configuration file : |
/private/etc/apache2/http.conf |
Apache Log files : |
/private/var/log/apache2/ |
System Log file : |
/private/var/log/system.log |
Modules : |
/usr/libexec/apache2/ |
Apache Binary : |
/usr/sbin/apachectl |
Root in a browser : |
http://localhost/ |
You might also find it useful to log in as root unless you are happy using sudo.
It also might be an idea to show hidden files in finder, to do this type:
defaults write com.apple.Finder AppleShowAllFiles YES
at a command line and restart Finder.
To start / restart apache:
Apple menu -> System Preferences -> Sharing -> Web Sharing (tickbox)
Activating / deactivating the tickbox effectively starts and stops Apache.
Or at the command line you can type any of the following:
apachectl start apachectl stop apachectl restart
You can verify that Apache has started by going to http://localhost/ in your browser and checking that the Apache default page appears.
So what do we have to do to get Apache and Tomcat talking to each other? First we need a connector. Currently there is a lot of discussion in the community over whether to use mod_jk or mod_proxy.
I’m going to start with mod_jk
Unfortunately the version available at the apache site (1.2.25) for Mac OSX is not compatible with Leopard.
If you want to create a version that is, you will need to build your own or download a pre-compiled version for Leopard – as kindly provided here – although you do this at your own risk.
Once you have downloaded/created a compatible version of mod_jk, rename the file mod_jk.so place in the modules directory and change the permissions to 755 with:
chmod mod_jk.so 755
(you will need to place sudo in front of this if you are not logged in as root).
Next, create a folder for the mod_jk log file to be written to. I created a directory : private/var/log/mod_jk
Open the http.conf (Note you may want to make a backup of this file before editing it). Locate the area in the file where the modules are loaded. (You should find may lines starting with the text LoadModule). Append your own LoadModule line :
LoadModule jk_module libexec/apache2/mod_jk.so
add to this the location of the log file:
JkLogFile /private/var/log/mod_jk/mod_jk.log
(This is assuming that your modules reside in libexec/apache2/ otherwise you will need to specify your own modules directory.)
Next it might be prudent to check that Apache is still working, so start it or restart it and point your browser at http://localhost/ If you are no longer seeing the apache page you should check /private/var/log/system.log and/or /private/var/log/apache2/error.log for clues.
Also, check that the mod_jk.log file has been created.
Now we need to define a workers.properties file and put this in /private/etc/apache2/mod_jk/
A workers.properties file is effectively a listener for Apache which tells it when to redirect requests to Tomcat. Mine looks like this:
workers.tomcat_home=/Library/tomcat/tomcat55 workers.java_home=/System/Library/Frameworks/JavaVM.framework/Versions/Current worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13
Note that I often have different versions of Tomcat installed on my system which is why my workers.tomcat_home points at /Library/tomcat/tomcat55 but you should point at it a wherever you have installed Tomcat on your system.
Finally, tell Apache about your workers.properties file and a few other things so replace the lines you have added to httpd.conf with the following:
# mod_jk configuration LoadModule jk_module libexec/apache2/mod_jk.so # path to workers.properties file JkWorkersFile /etc/apache2/mod_jk/workers.properties # path to mod_jk log file JkLogFile /private/var/log/mod_jk/mod_jk.log # mod_jk log level [debug/error/info] JkLogLevel info # mod_jk log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # patterns for mounting JkMount /servlet/* ajp13 JkMount /*.jsp ajp13 # end mod_jk configuration
Restart Apache and you should be in business!
I’ll maybe come back and tackle mod_proxy but for now I’ll point you towards Michael Scepaniak’s recent article mod_jk fail, mod_proxy success.
MarkB
Inspiring Gig Posters
I’ve recently discovered a great source of design inspiration, it’s called gigposters.com and, as you’ve probably guessed, features poster art for gigs for big and small bands alike.
What I like about the posters at gigposters.com is that they represent a nice cross-section of independent design that sets out to appeal to a young and outgoing audience.
There seems to be no rules, designers don’t appear to follow bands’ brands or indeed even use their logo – I’m not even sure the bands have to approve. As these posters are transient, existing only in a brief window of time, the designers can afford to take risks. The only restriction, in some cases, is probably that imposed by the printing budget, so certain posters are limited to a couple of colours. That’s often the case.
This is such a refreshing cocktail of ideas, so distant from the commercial designs, mercilessly re-iterated and clinically refined. This is not the sort of thing you can find, heavily branded on bus shelters and billboard advertisements. These are spontaneous acts of art, an excuse to design.
I would love to see them in their natural habitat, placed within walking distance from the very events that they seek to promote, on street corners, cafes and student unions. Indeed if it wasn’t for sites like gigposters.com we might not even know of their existence.
I’ve created various ‘event’ posters myself and I greatly enjoy the medium, often the text is secondary to the concept – the art being part and parcel of the message, the larger part of which is ‘look at me!’ It’s this widely unregulated environment that makes this medium such a joy to design and behold. A breath of fresh air in world of mass-market corporate advertising.
And so I present a selection of some of Happyworm’s favourite posters which also include incidentally, some of our favourite bands.
Silvia
Configuring Leopard’s Apache to work with all Rewrite Rules
Although there are a few blog posts out there detailing how to enable .htaccess on Mac OSX 10.5. I didn’t find anything that could help me with a problem I had with a specific RewriteRule.
This post isn’t specific to Leopard but maybe useful to users of this OS due to the default values that it’s pre-installed Apache’s httpd.conf comes set with.
Say for SEO reasons you wanted to rewrite
product.php?id=17
as
product/toaster/17.html
You could use the following rewrite rule:
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2
In other blogs it will tell you that you will need to change AllowOverride None to AllowOverride All in the <Directory “/Library/Webserver/Documents”> of /private/etc/apache2/httpd.conf and perhaps also in any conf files found in /private/etc/apache2/users. (This is not enabled by default on Leopard).
What they won’t neccesarily tell you is that to get rewrite rules like the above working you need to remove MultiViews from your Options list, leaving you with something like this :
<Directory "/Library/Webserver/Documents"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
I hope this saves someone the trouble I went through this morning trying to figure it out.
For a quick explanation see the short but sweet Apache Multiviews are evil
MarkB
The Seven Year Itch
Our new website is finally online. And I wish I could stress that “finally” in the same way as the thought of the pending website has haunted me for the last 12 months at least.
I am a web designer and I have been creating websites for people for nearly 10 years, but for some reason I couldn’t sign off even a single detail of our sparkly new site. I did the planning, the content gathering, the sketching, the mocking up, but something was always unsatisfactory to me and had to scrap, re-think, re-plan, re-arrange, re-design over and over again.
What was wrong with me?
The official line was that I could really only work on our website after I’d spent the most productive part of the day pouring my genius on clients’ projects and was therefore drained of any creativity (and probably brain activity too).
A couple of weeks ago, we decided it was time to link our website to our latest project Leonecasa.it, but horror…. and our new site was nowhere near finished and our current website was an old and stale, 600×800 res. fella that hadn’t had a makeover for the last 7 years.
So the decision was taken to put up a temporary simple page, where we could present our most recent work and then develop it and evolve it, when we had time.
Now that the new site – ehm…the new (single) page – is up, I feel a lot better and it seems that I am finally coming to terms with what was holding the whole project back. I hereby pronounce as the culprit, a vicious mixture of:
1. irresistible desire to show off
2. unnecessary quest for innovation
3. tendency to be overly critical (aka trying to remove any source of possible criticism)
Thinking about it now, it appears obvious that what we needed wasn’t anything fancy, just a simple straightforward showcase of our work, which is already in its own right the best proof of our abilities and creativity that you can get.
So, for the time being, our original, ambitious design that aimed to make the best of our CSS, AJAX and Flash skills to create an all-singing, all-dancing showcase, is resting in my virtual draw.
The idea of adding to and improving the existing pages to create something alive and evolving, is instead gaining momentum.
Silvia
Previous Posts
- The Hyperaudio Pad – Next Steps and Media Literacy
- Breaking Out – The Making Of
- Breaking Out – Web Audio and Perceptive Media
- Altrepreneurial vs Entrepreneurial and Why I am going to Work with Al Jazeera
- HTML5 Audio APIs – How Low can we Go?
- Hyperaudio at the Mozilla Festival
- The Hyperaudio Pad – a Software Product Proposal
- Introducing the Hyperaudio Pad (working title)
- Accessibility, Community and Simplicity
- Build First, Ask Questions Later
- Further Experimentation with Hyper Audio
- Hyper Audio – A New Way to Interact
- P2P Web Apps – Brace yourselves, everything is about to change
- A few HTML5 questions that need answering
- Drumbeat Demo – HTML5 Audio Text Sync
Tag Cloud
-
Add new tag
AJAX
apache
Audio
band
buffered
Canvas
CDN
chrome
community
custom tags
firefox
gig
HTC
HTML5
Hyper Audio
internet explorer
java
javascript
journalism
jPlayer
jQuery
jscript
LABjs
leopard
media
Mozilla
MVP
opera
opera mini
osx
P2P
Popcorn.js
poster
prototyping
rewrite
safari
Scaling
simplicity
SoundCloud
timers
tomcat
video
Web Apps
web design