CreateProcess 오류=main() 메서드를 실행할 때 파일 이름 또는 확장자가 너무 깁니다.
이클립스 헬리오스에 오류가 있습니다.
명령줄 실행 중 예외가 발생했습니다.프로그램 "C:"를 실행할 수 없습니다.\Program Files (x86)\Java\jre6\bin\javaw.exe (디렉토리 "C:\Users\motiver\helios_workspace\TimeTracker": CreateProcess 오류=오류, 파일 이름 또는 확장자가 너무 깁니다.
저는 조금 조사했지만 구글 앱 엔진에서 작업할 때 DataNucleus와 관련된 문제가 대부분이었습니다.하지만 저는 구글 앱 엔진과 관련된 어떤 것도 원격으로 사용하고 있지 않습니다.JBOSS 6에서 Servlet 3.0으로 작은 프로젝트를 진행하고 있으며, 웹 서비스를 노출하기 위해 ORM 및 RESTEASY용 Hibernate 4.1.2를 사용하고 있습니다.기본적으로 스키마를 폐기하고 다시 작성하는 main() 메서드를 가진 util 파일을 만들었습니다.테스트 목적으로 깨끗한 데이터베이스가 필요할 때 main() 메토스를 실행합니다.Tomcat 7에서는 정상적으로 동작했지만, JBoss 6으로 이동했을 때 동작이 정지되었습니다.
어떤 힌트나 해결책이라도 주시면 감사하겠습니다.
이 문제에 대한 간단한 해결책(클릭 몇 번이나 간단한 명령어처럼)은 없습니다.
Eclipse.org의 이 버그리포트에 기재되어 있는 답변을 인용하면, 회피책은 다음과 같습니다.가장 고통스럽지 않은 것을 고르세요.
- 클래스 경로를 줄입니다.
- jar 파일 대신 디렉토리 사용
- 다른 모든 jar가 포함된 jar 파일을 사용하고 매니페스트 파일 내의 classpath 변수를 사용하여 다른 jar를 가리킵니다.
- 구성 파일에서 클래스 경로를 읽는 특수 클래스 로더 사용
- 버그 리포트 문서에 첨부되어 있는 패치 중 하나를 사용해 보겠습니다.
- 전용 포장지 사용(예: 개미)
업데이트: 2014년 7월 이후에는 더 나은 방법이 있습니다(@Brad-Mace의 답변 덕분에).
를 사용하지 않고 Project -> Generate Javadocs
해서 이렇게 하면 useexternalfile="yes"
이 문제를 해결하기 위해 특별히 설계된 Javadoc 태스크로 이동합니다.
를 사용하지 않고 하면, 「」가 됩니다.Project -> Generate Javadocs
해서 더하면 요.useexternalfile="yes"
javadoc
이 문제를 해결하기 위해 특별히 설계된 태스크입니다.
나는 오늘 이 문제에 직면했고 이 Gradle 플러그인을 사용하여 해결할 수 있었다.
github url은 이것입니다.
저처럼 Gradle이 무엇인지 모르지만 프런트 엔드 작업을 수행하기 위해 백엔드를 실행해야 하는 경우 BE 서버를 시작하기 위해 호출되는 build.gradle 파일을 찾아 맨 위에 추가합니다.
plugins {
id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
intellij에는 '명령줄 단축' 옵션이 있습니다. 'JAR 매니페스트' 또는 '@argFiles'를 선택하면 문제가 해결됩니다. 기본적으로 긴 클래스 경로가 jar 파일 또는 임시 파일에 저장됩니다.
IntelliJ 2020.2의 Hibernate/JPA 콘솔에서 JPQL 쿼리를 실행하려고 했습니다.
이것을 .idea/workspace.xml에 추가하면 수정되었습니다.
<component name="PropertiesComponent">
...
<property name="dynamic.classpath" value="true"/>
...
</component>
솔루션 출처: https://youtrack.jetbrains.com/issue/IDEA-166929?_ga=2.167622078.1290412178.1604511702-23036228.1574844686
해답이 댓글에 묻히지 않도록 여기서 제 질문에 답합니다.일식 내에서 실행 가능한 항아리로 프로젝트를 내보내고 "java - jar MyJar.jar" 명령줄을 실행했는데 완벽하게 작동합니다.
이것은 특별히 일식을 위한 것은 아니지만, 이것을 회피하기 위한 방법은 maven 저장소에 심볼릭 링크를 만들어 "C:\R"과 같은 것을 가리키는 것이었습니다.그런 다음 settings.xml 파일에 다음 파일을 추가했습니다.
<localRepository>C:\R</localRepository>
maven 저장소 경로가 윈도 머신의 길이 문제의 원인이 되었습니다.
Eclipse 버전을 업데이트해 보십시오. 이 문제는 최근에 해결되었습니다(2013-03-12).버그 리포트 https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193 를 확인합니다.
질문은 오래되었지만 여전히 유효합니다.저는 새로운 멤버가 팀에 합류하거나 기존 코드에 새로운 코드 세그먼트가 추가될 때마다 이 상황을 자주 경험합니다.다음의 간단한 회피책은, 디렉토리를 위로 이동해 「클래스 패스를 삭감」하는 것입니다.
질문에서 언급했듯이, 이것은 일식에만 국한된 것이 아닙니다.IntelliJ Idea 14와 2018에서도 이 문제를 접했습니다.
오랜 조사 끝에, 해결책은 이 시스템을
포크 = false
개미 빌드 파일의 javc에 있습니다.
<javac destdir="${build.dir}" fork="false" debug="on">
<classpath .../>
<src ... />
<patternset ... />
</javac>
이게 지금 내 개미 빌드 자바크 모습이야.포크에 대한 자세한 내용은 ant 문서를 참조하십시오.
버그 리포트 Bug 327193에서는 수정으로 간주되고 있습니다만, 최근 Eclipse Kepler 4.3.2에서 이 문제가 발생했습니다.
Eclipse Juno 이상용 패치를 다운로드하십시오.
https://bugs.eclipse.org/bugs/attachment.cgi?id=216593
- 다운로드 후 기존 Eclipse/plugins/org.eclipse.jdt.launching_3.jar를 백업합니다.
- 패치의 클래스를 복사하여 org.eclipse.jdt.launching JAR에 붙여넣습니다(기존 파일 대체).
- 이클립스를 재시작합니다.
위의 몇 명의 사용자가 이 문제에 대해 by pass를 실행할 수 있도록 gradle을 실행하는 방법은 다음과 같습니다.
plugins {
id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
또는
plugins {
id "com.github.ManifestClasspath" version "0.1.0-RELEASE"
}
하지만 JVM 프로세스를 중지하고 모든 작업을 수행하는 것이 더 나은 솔루션이라고 생각했습니다.
gradle 파일에 다음 추가:
plugins {
`id "com.github.ManifestClasspath" version "0.1.0-RELEASE"
}
https://plugins.gradle.org/plugin/com.github.ManifestClasspath 를 참조해 주세요.
build.build.gradle」)에해 주세요.( )gradle version 4.10.x
com.xxx.MainClass
는 주 이 있는입니다.
plugins {
id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
apply plugin: 'application'
application {
mainClassName = "com.xxx.MainClass"
}
되어야 합니다.를 사용하는 이 있습니다.스크립트를 사용하는 다른 방법이 있습니다.run.sh
는 이할 수 .인텔리J를 기동하는 .gradle bootRun
.
이것을 시험해 보세요.
java -jar -Dserver.port=8080 빌드/libs/APP_NAME_HERE.jar
해결 방법:
이클립스를 사용하는 경우:
.m2 저장소를 다음으로 이동합니다.
c:\ Eclipse > Windows / Preferences / Maven / User Settings -> 내용을 사용하여 자체 setting.xml 을 만듭니다.
<settings>
<localRepository>c:/.m2/repository</localRepository>
</settings>
IntelliJ를 사용하는 경우: IntelliJ로 이동하여 "pom.xml" > "maven" > "settings.xml" 의 마우스 오른쪽 버튼을 클릭합니다.
내용:
<settings>
xmlns="yourcontent"
xmlns:xsi="yourcontent"
xsi:schemaLocation="yourcontent.xsd">
<localRepository>c:/.m2/repository</localRepository>
</settings>
제 경우 시스템 Java 버전이 intellij/eclipse Java 버전과 다르기 때문에 오류가 발생하였습니다.시스템과 사용자의 Java 버전이 다릅니다.한 버전을 사용하여 코드를 컴파일하고 다른 버전을 사용하여 실행하려고 하면 오류가 발생합니다.
#The system java version is 1.7.131
$ java -version
java version "1.7.0_131"
간단히 말하면, 코드가 컴파일되어 동일한 Java 버전으로 실행되는지 확인하십시오.
저는 gradle 플러그인의 레거시 버전을 사용하고 있는데 이 플러그인으로 문제가 해결되었습니다.
사용방법(자세한 내용은 소스 확인):
Gradle 2.1 이상용 플러그인 DSL용 스크립트 스니펫 작성
plugins { id "com.github.ManifestClasspath" version "0.1.0-RELEASE" }
이전 Gradle 버전에서 사용하거나 동적 구성이 필요한 경우 스크립트 스니펫을 빌드합니다.
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.github.viswaramamoorthy:gradle-util-plugins:0.1.0-RELEASE" } } apply plugin: "com.github.ManifestClasspath"
Maven을 호출하는 동안 동일한 오류가 발생했습니다.
은 " " " " " 제 " 。classpath
클래스 패스를 되었습니다.classpath가 수정되었습니다.
다음과 같이 큰 클래스 패스를 갱신하는 방법은 여러 가지가 있습니다.Windows에서 긴 Java 클래스 경로를 설정하는 방법
- 와일드카드 사용
- 인수 파일
- 패칭 항아리
Intelij를 사용하고 있기 때문에 사용하던 Argument File을 사용할 수 있는 옵션이 있습니다.
Windows 머신의 경우 명령줄에 jar 파일명/경로 길이가 제한되어 있기 때문에 아래 에러 메시지가 표시되므로 많이 검색하려고 했습니다.위의 솔루션을 적용해도 동작하지 않고 Gradle(gradle-4.10.2-all zip)의 작업 스니펫을 찾았습니다.
오류:
CreateProcess error=206, The filename or extension is too long
아래 사용gradle.build
코드 스니펫을 사용하여 IntelliJ 또는 STS에서 위의 문제를 해결하거나 모든 문제를 해결합니다.
그라들 코드 수정:
apply plugin: 'application'
task pathingJar(type: Jar) {
dependsOn configurations.runtime
appendix = 'pathing'
doFirst {
manifest {
attributes "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
}
}
}
task copyToLib(type: Copy) {
into "$buildDir/libs"
from configurations.runtime
}
bootRun {
systemProperties = System.properties
//This below line is for if you have different profiles prod, dev etc...
//systemProperty 'spring.profiles.active', 'dev'
jvmArgs('-Djava.util.logging.config.file=none')
mainClassName = "com.xxxx.Main"
dependsOn pathingJar
dependsOn copyToLib
doFirst {
classpath = files("$buildDir/classes/java/main", "$buildDir/resources/main", pathingJar.archivePath)
}
}
VSCode를 사용하는 경우:
create launch.json 파일을 .de .claunchode/에 만듭니다.
더하다
{"configurations": [{ "type": "java","shortenCommandLine ": "auto",}]}
intellij를 사용하는 경우:
.idea/syslog.xml을 엽니다.
안에서.
<component name="PropertiesComponent">
더하다<property name="dynamic.classpath" value="true"/>
DataNucleus가 많은 경로로 Arguments를 덮어쓰기하기 때문에 발생합니다.
다음과 같이 덮어써야 합니다.
-enhancerName ASM -api JDO -pu MediaToGo
도움이 되길 바래!
저도 같은 오류가 발생했어요.클리닝, 리빌드, invalidate Cache, retart 등의 솔루션을 시도했지만 아무것도 동작하지 않았다.
짧은 이름의 새 폴더를 만들고 새 폴더의 모든 파일(앱 폴더, gradle 파일 등)을 복사했습니다.Android Studio에서 앱을 열어 정상적으로 동작하고 있습니다.
나에겐 잘못된 JDK 경로였다.JDK 파일에 대한 올바른 경로가 있는지 확인하십시오.
파일 -> 프로젝트 구조
Android Studio를 사용하는 경우 캐시 비활성화/재시작을 시도합니다.파일 메뉴에 있는 옵션
나는 사용했다com.virgo47.ClasspathJar
https://plugins.gradle.org/plugin/com.virgo47.ClasspathJar 에서 이 문제를 해결합니다.
아래의 오류를 수정하기 위해 충분한 조사를 했지만, 좋은 해결책을 찾지 못했고, 이 스크립트를 준비했고, 정상적으로 작동하고 있으며, 일반에 공유하여 활용하고 시간을 절약할 수 있다고 생각했습니다.
CreateProcess error=module, 파일 이름 또는 확장자가 너무 깁니다.
Gradle 빌드 도구를 사용하는 경우 실행 파일이 응용 프로그램의 빌드/libs 디렉토리에 저장됩니다. run.sh
-> 프로젝트의 루트 디렉토리에 이 파일을 만들고 그 안에 아래 스크립트를 복사한 후 git bash로 이동하여 run.sh 라고 입력한 후 입력합니다.이게 도움이 됐으면 좋겠네요!
#!/bin/bash
dir_name=`pwd`
if [ $# == 1 ] && [ $1 == "debug" ]
then
port=$RANDOM
quit=0
echo "Finding free port for debugging"
while [ "$quit" -ne 1 ]; do
netstat -anp | grep $port >> /dev/null
if [ $? -gt 0 ]; then
quit=1
else
port=`expr $port + 1`
fi
done
echo "Starting in Debug Mode on "$port
gradle clean bootjar
jar_name="build/libs/"`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'`
#java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$port $jar_name
elif [ $# == 1 ] && [ $1 == 'help' ]
then
echo "please use this commands"
echo "------------------------"
echo "Start in Debug Mode: sh run.sh debug"
echo "Start in Run Mode: sh run.sh"
echo "------------------------"
else
gradle clean bootjar
word_count=`ls -l ./build/libs/|grep jar|grep -v grep|wc -w`
jar_name=`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'`
jar_path=build/libs/$jar_name
echo $jar_name
#java -jar $jar_path
fi
이게 도움이 됐으면 좋겠어!!
다음 명령을 사용할 수 있습니다.
mklink /J c:\repo C:\<long path to your maven repository>
mvn -Dmaven.repo.local=c:\repo any mvn command
이 스레드에서 유효한 답변이 나의 특별한 경우에 대한 정답이었습니다.datanucleus의 ORM 폴더 경로를 지정하여 Java 경로 컴파일을 확실히 줄입니다.
https://stackoverflow.com/a/1219427/1469481
'개미 전개'를 실행하면 다음 오류가 발생함
Cannot run program "C:\java\jdk1.8.0_45\bin\java.exe": CreateProcess error=206, The filename or extension is too long
그 전에 '개미 청소'를 해서 고쳤어요.
안드로이드 스튜디오에서도 같은 에러가 발생했습니다.IDE에서 Build-> Clean Project를 실행하여 해결할 수 있었습니다.
언급URL : https://stackoverflow.com/questions/10519558/createprocess-error-206-the-filename-or-extension-is-too-long-when-running-main
'IT' 카테고리의 다른 글
PHP 구문 질문:물음표와 콜론은 무슨 뜻입니까? (0) | 2023.01.15 |
---|---|
기존 값이 있는 Vue 형식 입력 바인딩 (0) | 2023.01.15 |
LUMEN : SQLSTATE [ 42000 ]를 수정하는 방법:구문 오류 또는 액세스 위반: larabel lumen에서 1071 (0) | 2023.01.15 |
C 및 C++의 탭 문자를 이스케이프해야 합니까? (0) | 2023.01.15 |
LEFT JOIN의 LIMIT 사용방법 (0) | 2023.01.15 |