Во-первых, это зависит от операционной системы, которую вы не указали. Если это в Windows, есть пара команд Windows: assoc и ftype. Каждому типу файла присваивается «имя типа». assoc ассоциирует расширение с типом, а ftype связывает тип с командой для выполнения.
Например, на моей рабочей станции, которую я сейчас использую, у меня есть .jar, связанный с jarfile assoc .jar=jarfile
и jarfile, связанный с "C: \ Program Files \ Java \ jre6 \ bin \ javaw.exe" -jar "% 1 "% * ftype jarfile="C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1" %*
Примечание. Для этого необходимо быть в группе администраторов.
Для второго вопроса (который, вероятно, должен был быть в отдельном вопросе), .java не является форматом файла. .java файлы на самом деле просто текстовые файлы. Код для большинства языков программирования подобен этому, поэтому он эквивалентен файлу .txt, поэтому вы можете читать и записывать его в любом редакторе, который предпочитаете. Расширение файла просто позволяет компилятору Java знать, что код на самом деле является кодом Java, даже если он находится в простом текстовом формате.
Однако Java-компилятор обычно не компилирует код с расширением, отличным от .java. Если я попытаюсь, я получу ошибку error: Class names, 'myFile.blah', are only accepted if annotation processing is explicitly requested
Это заставляет меня поверить, что есть способ заставить его скомпилироваться в любом случае, возможно, предоставив ему несколько пользовательских процессоров для аннотаций? Я не уверен, я никогда не делал ничего подобного. Тем не менее, если код является Java-кодом, вы можете просто позволить ему иметь расширение .java.