<p>First of all, I know how to build a Java application. But I have always been puzzled about where to put my classes. There are proponents for organizing the packages in a strictly domain oriented fashion, others separate by tier.</p>

<p>I myself have always had problems with </p>

<ul>
<li>naming, </li>
<li>placing</li>
</ul>

<p>So,</p>

<ol>
<li>Where do you put your domain specific constants (and what is the best name for such a class)?</li>
<li>Where do you put classes for stuff which is both infrastructural and domain specific (for instance I have a FileStorageStrategy class, which stores the files either in the database, or alternatively in database)?</li>
<li>Where to put Exceptions?</li>
<li>Are there any standards to which I can refer?</li>
</ol>

Class names should always be descriptive and self-explanatory. If you have multiple domains of responsibility for your classes then they should probably be refactored.
Likewise for you packages. They should be grouped by domain of responsibility. Every domain has it's own exceptions.
Generally don't sweat it until you get to a point where it is becoming overwhelming and bloated. Then sit down and don't code, just refactor the classes out, compiling regularly to make sure everything works. Then continue as you did before.