Ошибка CreateProcess = 206. Имя файла или расширение слишком велико при запуске метода main()

У меня есть эта ошибка в eclipse helios:

Исключение произошло при выполнении командной строки. Не удается запустить программу "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" (в каталоге "C:\Users\motiver\helios_workspace\TimeTracker" ): Ошибка CreateProcess = 206, имя файла или расширение слишком долго

Я немного изучил, но большинство проблем были связаны с DataNucleus при работе с Google App Engine. Но я не использую ничего удаленного с Google App Engine. Я делаю небольшой проект с Servlet 3.0 на JBOSS 6. Я использую Hibernate 4.1.2 для ORM и RESTEasy, чтобы открыть веб-службу. Я создал файл утилиты, который имеет метод main(), который в основном отбрасывает и воссоздает схему. Я запускаю main() methos, когда мне нужна чистая база данных для тестирования. Он отлично работал на Tomcat 7, но он перестал работать, когда перешел на JBoss 6.

Было бы полезно получить любую подсказку или решение.

Ответ 1

Нет простого (как в пару кликов или простой команды) решения этой проблемы.

Цитируя некоторые ответы в этом сообщении об ошибке на Eclipse.org, это обходные пути. Выберите тот, который наименее болезнен для вас:

  • Уменьшить путь к классам
  • Используйте каталоги вместо файлов JAR
  • Используйте упакованные файлы JAR, которые содержат все другие файлы JAR, используйте переменную classpath внутри файла манифеста, чтобы указать на другие файлы JAR
  • Используйте специальный загрузчик классов, который читает путь к классам из файла конфигурации
  • Попробуйте использовать один из прикрепленных патчей в документе об ошибке
  • Используйте собственную обертку, например, муравей
  • Перейти к IntelliJ (обновление: как указывает @nitind, это не вариант)

Обновление: после июля 2014 года есть лучший способ (благодаря ответу @Brad-Mace ниже:

Если вы создали свой собственный файл сборки вместо использования Project → Generate Javadocs, то вы можете добавить useexternalfile="yes" к задаче Javadoc, которая разработана специально для решения этой проблемы.

Ответ 2

Если вы создаете свой собственный файл сборки, а не используете Project -> Generate Javadocs, вы можете добавить useexternalfile="yes" в задачу javadoc, которая разработана специально для решения этой проблемы.

Ответ 3

Я столкнулся с этой проблемой сегодня, и я смог решить ее с помощью этого плагина Gradle

Это GitHub URL это

Если вы, как и я, понятия не имеете, что такое Gradle, но вам нужно запустить бэкэнд для выполнения вашей работы с внешним интерфейсом, вам нужно найти файл build.gradle, который вызывается для запуска вашего сервера BE, и добавить его в вершина:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}

Ответ 4

Отвечая на мой собственный вопрос, чтобы решение не зарывалось в комментариях. Я экспортировал проект в качестве исполняемого банку из eclipse и выполнил командную строку "java -jar MyJar.jar", и он отлично работает

Ответ 6

У меня такая же ошибка, при вызове Maven.

Основной причиной моей проблемы был classpath был очень большой. Обновление пути к классам устранено.

Ответ 7

В отчете об ошибке Ошибка 327193 считается фиксированным, но это происходит со мной недавно с Eclipse Kepler 4.3.2.

Загрузите патч для Eclipse Juno или новее:

https://bugs.eclipse.org/bugs/attachment.cgi?id=216593

  • После загрузки резервной копии существующих Затмение/плагины/org.eclipse.jdt.launching_3. *. баночка
  • Скопировать и вставить классы в патч в org.eclipse.jdt.launching JAR (заменить существующие файлы).
  • Перезапустить Eclipse.

Ответ 8

Это не специально для затмения, но я обошел это путем создания символической ссылки на мой репозиторий maven и указания на что-то вроде "C:\R". Затем я добавил следующее в мой файл settings.xml:

<localRepository>C:\R</localRepository>

Путь к репозиторию maven способствовал проблемам с длиной в моей машине с Windows.

Ответ 9

Попробуйте следующее:

java -jar -Dserver.port = 8080 build/libs/APP_NAME_HERE.jar

Ответ 10

это происходит из-за того, что DataNucleus иногда перезаписывает Аргументы со многими путями.

Вам необходимо перезаписать их следующим образом:

-enhancerName ASM -api JDO -pu MediaToGo

Надеюсь помочь вам!

Ответ 11

Действительный ответ из этого потока был правильным ответом для моего особого случая. Укажите путь к папке ORM для datanucleus, безусловно, уменьшите компиляцию пути Java.

fooobar.com/questions/100823/...

Ответ 12

Я получил ошибку ниже, когда я запускаю ant deploy

Cannot run program "C:\java\jdk1.8.0_45\bin\java.exe": CreateProcess error=206, The filename or extension is too long

Исправлено его, выполнив ' ant clean'.

Ответ 13

Я получил ту же ошибку в студии Android. Я смог разрешить его, запустив Сборка Очистить проект в среде IDE.

Ответ 14

Это из-за вашего длинного имени каталога проекта, которое дает вам очень длинный CLASSPATH целом. Либо вам нужно уменьшить количество jar файлов, добавленных в CLASSPATH (убедитесь, что вы удалили только ненужные jar файлы), либо лучше всего уменьшить каталог проекта и снова импортировать проект. Это уменьшит CLASSPATH. Это сработало для меня.

Ответ 15

У меня была такая же проблема, но вместо этого я использовал netbeans.
Я нашел решение, поэтому я делюсь здесь, потому что я нигде не нашел этого, поэтому, если у вас есть эта проблема на NetBeans, попробуйте это:
(имена могут быть отключены, так как мои NetBeans на португальском языке) Щелкните правой кнопкой мыши проект> свойства> сборка> компиляция> Снимите флажок запускать компиляцию на внешней виртуальной машине.

Ответ 16

Я получил ту же ошибку. Пробные решения, такие как очистка, восстановление, invalidateCache, retart и т.д., Но ничего не работает.

Я только что создал новую папку с коротким именем и скопировал все файлы (папку приложения, файлы Gradle и т.д.) В новую папку. Открыл приложение в андроид студии и работает нормально.

Ответ 17

Вопрос старый, но все еще актуален. Я часто сталкиваюсь с такой ситуацией, когда к моей команде присоединяется новый участник или в существующий код добавляется новый сегмент кода. Простой обходной путь, которому мы следуем, - это "Уменьшить путь к классам", перемещаясь вверх по каталогам.

Как уже упоминалось, это не относится к затмению. Я сталкивался с этой проблемой также в IntelliJ Idea 14 и 2018.

После долгих исследований я нашел решение установить

fork = false

в javc файла сборки муравья.

<javac destdir="${build.dir}" fork="false" debug="on">
    <classpath .../>
    <src ... />
    <patternset ... />
</javac>

Вот так теперь выглядит мой сборщик муравьев javac. Чтобы узнать больше о форке, обратитесь к документации по муравьям.

Ответ 18

Чтобы решить это:

Если вы используете Eclipse:

Переместить репозиторий .m2 в

c:\Перейдите в Eclipse> Windows/Предпочтения /Maven/Настройки пользователя → Создайте свой файл setting.xml с его содержимым:

<settings>
  <localRepository>c:/.m2/repository</localRepository>
</settings>

Если вы используете IntelliJ: перейдите в IntelliJ> щелкнув правой кнопкой мыши на "pom.xml"> maven> create "settings.xml"

с его содержанием:

<settings>
      xmlns="yourcontent"
      xmlns:xsi="yourcontent"
      xsi:schemaLocation="yourcontent.xsd">
  <localRepository>c:/.m2/repository</localRepository>
</settings>

Ответ 19

В моем случае ошибка показывалась, потому что системная Java-версия отличалась от Intellijj/Eclipse Java-версии. Система и пользователь имели разные версии Java. Если вы скомпилируете свой код с использованием одной версии и попытаетесь запустить с использованием другой версии, произойдет ошибка. User java version is 1.8

#The system java version is 1.7.131
$ java -version
java version "1.7.0_131"

Короче говоря, убедитесь, что ваш код скомпилирован и запущен в той же версии Java.