Application-aware oblivious routing that supports flow-specific routing and static virtual channel (VC) assignments can achieve better performance than conventional oblivious routing by accounting for traffic demands of various flows in a given application. However, because these prior approaches consider the application-aware routing and static VC assignment steps separately, they unnecessarily impose routing restrictions to avoid deadlocks. In this letter, we propose a joint application-aware oblivious routing and static VC allocation framework that optimally solves both problems together to enable better deadlock-free performance. The experimental results show that our approach can achieve up to 30% better performance than the state-of-the-art application-aware oblivious routing algorithms and substantially better still in comparison with conventional oblivious routing approaches.