Jira offers good deals, especially for open-source projects, but they had a $5 special last year that as far as I can remember was OK for use on commercial development. It's fairly easy to get up and running and a lot of its components are stock
Java items such as the Jakarta packages.
I'm currently using Trac. Unlike Jira, it's not coded in Java - it's in Python, but it works quite well. It's one of the most popular issue-management systems for open-source projects. It not only manages tickets, it has a built-in wiki which is good for building up design documents, user reference information and whatever else you can think of to do with a wiki. Trac tickets can reference wiki entries and vice versa. Trac is also quite customizable, has a generous supply of third-party plug-ins, and integrates tightly with version control systems such as Subversion and IDEs like Eclipse. There's also decent security support, so you can restrict who can see and do things. I'd let you browse one of mine, but they're full of confidential client data. To make life simpler, I run Jira in appliance VMs. The VM contains the Apache webserver with WebDAV plugins, cvs and svn source code archives and the Trac code. I use external databases to hold the actual ticket/wiki data.
There is a wiki product for Jira now, although it's sold as a separate product.