When you access databases from the file system (instead of from the classpath or a jar file), any path name that is not absolute is interpreted as relative to the system directory.
The path name must do one of the following:
The path separator in the path name is a forward slash (/), even in Windows path names. The path name cannot contain a colon (:), except for the colon after the drive name in a Windows path name. See "Syntax of database connection URLs for applications with embedded databases" in the Derby Reference Manual for the full syntax.
You can specify only databases that are local to the machine on which the JVM is running. NFS file systems on UNIX and remote shared files on Windows (//machine/directory) are not guaranteed to work. Using derby.system.home and forward slashes is recommended practice for platform independent applications.
If two different database path name values, relative or absolute, refer to the same actual directory, they are considered equivalent. This means that connections to a database through its absolute path name and its relative path name are connections to the same database. Within Derby, the name of the database is defined by the canonical path of its directory from java.io.File.getCanonicalPath.
Derby automatically creates any intermediate directory that does not already exist when creating a new database. If it cannot create the intermediate directory, the database creation fails.