Если ваше исходное кодовое имя HelloWorld.java, ваш скомпилированный код будет HelloWorld.class
.
Вы получите эту ошибку, если вы вызываете ее, используя:
java HelloWorld.class
Вместо этого используйте это:
java HelloWorld
Я предполагаю, что вы подразумеваете возврат каретки (CR, "\r"
, 0x0d
) в конца строк, а не только слепо внутри файла (вы можете иметь их в середина строк за все, что я знаю). Использование этого тестового файла с CR только в конце первой строки:
$ cat infile
hello
goodbye
$ cat infile | od -c
0000000 h e l l o \r \n g o o d b y e \n
0000017
dos2unix
- это способ, если он установлен в вашей системе:
$ cat infile | dos2unix -U | od -c
0000000 h e l l o \n g o o d b y e \n
0000016
Если по какой-либо причине dos2unix
недоступно для вас, тогда sed
сделает это:
$ cat infile | sed 's/\r$//' | od -c
0000000 h e l l o \n g o o d b y e \n
0000016
Если по какой-либо причине sed
недоступно для вас, тогда ed
будет сделайте это сложным способом:
$ echo ',s/\r\n/\n/
> w !cat
> Q' | ed infile 2>/dev/null | od -c
0000000 h e l l o \n g o o d b y e \n
0000016
Если у вас нет любых этих инструментов, установленных на вашем поле, у вас есть больше проблем, чем попытки конвертировать файлов: -)
Если вы используете среду X и имеете правильный редактор (визуальный студийный код), тогда я буду следовать рекомендациям:
Код Visual Studio: как показать окончания строки
Просто перейдите в правый нижний угол экрана, визуальный код студии покажет вам как кодировку файла, так и конец строки, за которым следует файл, просто с простым щелчком вы можете переключить этот вокруг.
Просто используйте визуальный код в качестве замены для блокнота ++ в среде linux, и вы готовы к работе.
Еще раз решение ... Потому что всегда есть еще один:
perl -i -pe 's/\r//' filename
Это хорошо, потому что он на месте и работает в каждом вкусе unix / linux, с которым я работал.
Если вы используете ОС (например, OS X), у которой нет команды dos2unix
, но есть интерпретатор Python (версия 2.5+), эта команда эквивалентна команде dos2unix
:
python -c "import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))"
Он обрабатывает оба именованных файла в командной строке, а также каналы и перенаправления, как dos2unix
. Если вы добавите эту строку в ваш файл ~ / .bashrc (или эквивалентный файл профиля для других оболочек):
alias dos2unix="python -c \"import sys; import fileinput; sys.stdout.writelines(line.replace('\r', '\n') for line in fileinput.input(mode='rU'))\""
... при следующем входе в систему (или запустите source ~/.bashrc
в текущем сеанс) вы сможете использовать имя dos2unix
в командной строке так же, как в других примерах.
Самый простой способ в Linux - это imho
sed -i 's/\r//g' <filename>
. Сильные цитаты вокруг оператора замещения 's/\r//'
существенны. Без них оболочка интерпретирует \r
как escape + r и сводит ее к простой r
и удаляет все нижние регистры r
. Вот почему ответ, приведенный выше в 2009 году Rob , не работает.
И добавление модификатора /g
гарантирует, что даже несколько \r
будут удалены, и не только первый.
Существует утилита под названием dos2unix , которая существует во многих системах и может быть легко установлена на большинстве.
попробуйте это преобразовать файл dos в unix-файл:
fromdos file
blockquote>
tr -d '\r' < infile > outfile
См. tr (1)
Кто-то еще рекомендует dos2unix
, и я настоятельно рекомендую его. Я просто предоставляю более подробную информацию.
Если установлено, перейдите к следующему шагу. Если я еще не установлен, я бы рекомендовал установить его через yum
, например:
yum install dos2unix
. Тогда вы можете использовать его как:
dos2unix fileIWantToRemoveWindowsReturnsFrom.txt
Для UNIX ... Я заметил, что dos2unix удалил заголовки Unicode из моего файла UTF-8. В режиме git bash (Windows) следующий скрипт работает хорошо. Он использует sed. Обратите внимание, что он удаляет только возврат каретки на концах строк и сохраняет заголовки Unicode.
#!/bin/bash
inOutFile="$1"
backupFile="${inOutFile}~"
mv --verbose "$inOutFile" "$backupFile"
sed -e 's/\015$//g' <"$backupFile" >"$inOutFile"
вы можете просто сделать это:
$ echo $(cat input) > output
Старая школа:
tr -d '\r' < filewithcarriagereturns > filewithoutcarriagereturns
Я использовал для этого python, здесь мой код:
end1='/home/.../file1.txt'
end2='/home/.../file2.txt'
with open(end1, "rb") as inf:
with open(end2, "w") as fixed:
for line in inf:
line = line.replace("\n", "")
line = line.replace("\r", "")
fixed.write(line)
sed -i s/\r// <filename>
или немного; см. man sed
или богатство информации, доступной в Интернете, относительно использования sed
.
Следует отметить одно точное значение «возврата каретки» в приведенном выше; если вы действительно имеете в виду единственный управляющий символ «возврат каретки», то приведенный выше рисунок правильный. Если вы имели в виду, в общем, CRLF (возврат каретки и фид строки, то есть как линейные фиды реализуются под Windows), тогда вы, скорее всего, захотите заменить \r\n
. Голыми линейными каналами (newline) в Linux / Unix являются \n
.
Вот что,
%0d
является символом возврата каретки. Чтобы сделать его совместимым с Unix. Нам нужно использовать команду ниже.
dos2unix fileName.extension fileName.extension