Create Raw Transaction in BitcoinJ offline starting from UTXO info
I'm fighting with the TransactionOutput constructors to build the input for my transaction. I don't know where to set UTXO hash and index

I think you can build the input based on a previous transaction output (outpoint) as follows:
byte[] scriptBytes = {};
Sha256Hash vinTxId = Sha256Hash.wrap(txId);
TransactionOutPoint outpoint = new TransactionOutPoint(params, index, vinTxId);
Coin value = null;
TransactionInput input = new TransactionInput(params, transaction, scriptBytes, outpoint, value);
transaction.addInput(input);

Not sure if this is the best ways to do it.
EDIT: This does the same as the code above.
transaction.addInput(Sha256Hash.wrap(txId), index, ScriptBuilder.createEmpty());