There are three ways to do it:
exec java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml
No quotes; each Tcl word becomes a separate argument.
set command "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml"
exec {*}$command
# or in 8.4 and before, one of these:
# eval exec $command
# eval [list exec] [lrange $command 0 end]
# eval [linsert $command 0 exec]
Or, if you prefer shell syntax to Tcl syntax:
set command "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml"
exec /bin/sh -c $command
This last one is very useful when you need to do complex redirections; they're currently easier to do in the Bourne shell (and its derivatives) than in Tcl. It (probably) won't work on Windows though; the equivalent with firing stuff through CMD.EXE is unfortunately a bit horrible.
java, use e.g.exec sh -c "java -jar diffkit-0.9.0/diffkit-app.jar -planfiles plan.xml", otherwise see Johannes answer.