GVKun编程网logo

线程“ main”中的异常java.nio.file.InvalidPathException:索引2处的非法char <:>:(java唯一索引异常)

18

想了解线程“main”中的异常java.nio.file.InvalidPathException:索引2处的非法char:的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java唯一索引异

想了解线程“ main”中的异常java.nio.file.InvalidPathException:索引2处的非法char <:>:的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于java唯一索引异常的相关问题,此外,我们还将为您介绍关于ios – 线程“main”中的异常java.lang.RuntimeException:无效的十六进制字符:v – APNS notnoop、Java Appium-线程“主”中的异常java.lang.ExceptionInInitializerError-由以下原因引起:java.lang.IllegalArgumentException、java – 线程“main”中的异常org.hibernate.MappingException:未知实体:、java.nio.file.InvalidPathException: Illegal char <:>的新知识。

本文目录一览:

线程“ main”中的异常java.nio.file.InvalidPathException:索引2处的非法char <:>:(java唯一索引异常)

线程“ main”中的异常java.nio.file.InvalidPathException:索引2处的非法char <:>:(java唯一索引异常)

我必须将类路径资源从一个包复制到另一个。

我的程序是:

    public static void main(String[] args) throws IOException, URISyntaxException {            ClassLoader classLoader = CopyFileToDirectoryTest.class.getClassLoader();InputStream in = classLoader.getResourceAsStream("com/stackoverflow/main/Movie.class");            URI uri = ClassLoader.getSystemResource("com/stackoverflow/json").toURI();            Path path = Paths.get(uri.getPath(),"Movie.class");            System.out.println(path);            long copy = Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING);            System.out.println(copy);        }

Files.copy方法我得到异常:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <:> at index 2: /D:/Programs/workspaceEE/HibernateDemo/target/classes/com/stackoverflow/json    at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)    at java.nio.file.Paths.get(Paths.java:84)    at com.stackoverflow.main.CopyFileToDirectoryTest.main(CopyFileToDirectoryTest.java:34)

怎么解决呢?

public static void main(String[] args) throws IOException, URISyntaxException {        ClassLoader classLoader = CopyFileToDirectoryTest.class.getClassLoader();        InputStream in = classLoader.getResourceAsStream("com//stackoverflow//main//Movie.class");        URI uri = ClassLoader.getSystemResource("com//stackoverflow//json").toURI();        String mainPath = Paths.get(uri).toString();        Path path = Paths.get(mainPath, "Movie.class");        System.out.println(path);        long copy = Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING);        System.out.println(copy);    }

此代码可以正确地Movie.class从软件包复制com/stackoverflow/main到中com/stackoverflow/json

答案1

小编典典

问题是,不要Paths.get()期望从中产生那种价值uri.getPath()

解:

URI uri = ClassLoader.getSystemResource("com/stackoverflow/json").toURI();String mainPath = Paths.get(uri).toString();Path path = Paths.get(mainPath ,"Movie.class");

ios – 线程“main”中的异常java.lang.RuntimeException:无效的十六进制字符:v – APNS notnoop

ios – 线程“main”中的异常java.lang.RuntimeException:无效的十六进制字符:v – APNS notnoop

我一直在尝试实现notnoop APNS项目,以便向iOS设备发送推送通知,但我通过控制台收到此输出:

Exception in thread “main” java.lang.RuntimeException: Invalid hex character: v
at com.notnoop.apns.internal.Utilities.charVal(Utilities.java:133)
at com.notnoop.apns.internal.Utilities.decodeHex(Utilities.java:120)
at com.notnoop.apns.EnhancedApnsNotification.(EnhancedApnsNotification.java:72)
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:54)
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36)
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:45)
at PushServiceTryout.main(PushServiceTryout.java:16)

我有什么不对的想法吗?我能感觉到我快到了!提前致谢.

编辑:这是代码.无论如何,一旦我运行程序,我就会收到错误:s

import com.notnoop.apns.APNS;
import com.notnoop.apns.ApnsService;

public class PushServiceTryout
{
    public static void main(String[] args)
    {
        ApnsService service = APNS.newService()
                .withCert("c:/fcertificates.p12","1234")
                .withSandBoxDestination()
                .build();
        String msg = "Hello";

        String payload = APNS.newPayload().alertBody(msg).build();
        String token = "devicetoken";
        service.push(token,payload);
    }
}

解决方法

这是错误:

String token = "devicetoken";

您不能将字符串“devicetoken”用作设备令牌.设备令牌由64个十六进制字符组成(例如:“1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef”).当然,你也不能使用随机十六进制字符串.您应该使用从安装了应用程序的设备发送给您的设备令牌.

您获得String中第一个非十六进制字符的异常,恰好是v.

Java Appium-线程“主”中的异常java.lang.ExceptionInInitializerError-由以下原因引起:java.lang.IllegalArgumentException

Java Appium-线程“主”中的异常java.lang.ExceptionInInitializerError-由以下原因引起:java.lang.IllegalArgumentException

如何解决Java Appium-线程“主”中的异常java.lang.ExceptionInInitializerError-由以下原因引起:java.lang.IllegalArgumentException?

我正在用Java学习Appium,并尝试通过安装构造函数应用pageObjects来将驱动程序传递给我的测试用例。当我执行代码时,出现以下错误,我在线搜索并找不到解决方案。请帮助我调查此问题。我是Java编程的新手。

Sep 17,2020 3:29:25 PM io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
INFO: Detected dialect: W3C
Exception in thread "main" java.lang.ExceptionInInitializerError
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:52)
    at io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy(ProxyFactory.java:33)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement(AppiumFieldDecorator.java:222)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.access$0(AppiumFieldDecorator.java:220)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator$1.proxyForLocator(AppiumFieldDecorator.java:105)
    at org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate(DefaultFieldDecorator.java:62)
    at io.appium.java_client.pagefactory.AppiumFieldDecorator.decorate(AppiumFieldDecorator.java:160)
    at org.openqa.selenium.support.PageFactory.proxyFields(PageFactory.java:113)
    at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:105)
    at pageObjects.HomePage.<init>(HomePage.java:18)
    at TestCases.Basics.main(Basics.java:22)
Caused by: java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:79)
    at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:49)
    at net.sf.cglib.core.DefaultGeneratorStrategy.getClassVisitor(DefaultGeneratorStrategy.java:30)
    at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
    at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:332)
    at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
    at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
    at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
    at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
    at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
    at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:294)
    at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
    at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
    at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
    ... 11 more

HomePage.java代码:

package pageObjects;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.PageFactory;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.pagefactory.AndroidFindBy;
import io.appium.java_client.pagefactory.AppiumFieldDecorator;

public class HomePage{
    //All the objects belongs to one page will be defined in a java class
    //1. Call the driver object from testcase to PageObject file

    //Concatenate driver
    public HomePage(AppiumDriver driver) {
        // Todo Auto-generated constructor stub
        //AppiumFieldDecorator give the ability to test across iOS and Android platforms
        PageFactory.initElements(new AppiumFieldDecorator(driver),this);
    }

    @AndroidFindBy(xpath="//android.widget.TextView[@text=''Preference'']")
    public WebElement preferences;

}

Basics.java代码:

package TestCases;

import java.net.MalformedURLException;
import java.util.concurrent.TimeUnit;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import pageObjects.HomePage;
import pageObjects.PreferencesPage;

public class Basics extends Base{

    public static void main(String[] args) throws MalformedURLException {
    // Todo Auto-generated method stub

    AndroidDriver<AndroidElement> driver = Capabilities();
    /*  
     *  //xpath id className,androidUIautomator
     *  xpath Syntax
     *  //tagName[@attribute=''value'']
     */
    HomePage home = new HomePage(driver);
    home.preferences.click();
    //PreferencesPage preferences = new PreferencesPage(driver);
    driver.findElementByXPath("//android.widget.TextView[@text=''Preference'']").click();
    driver.findElementByXPath("//android.widget.TextView[@text=''3. Preference dependencies'']").click();
    driver.findElementById("android:id/checkBox").click();
    driver.findElementByXPath("(//android.widget.RelativeLayout)[2]").click();
    driver.findElementByClassName("android.widget.EditText").sendKeys("hello");
    driver.findElementsByClassName("android.widget.Button").get(1).click();
        
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

java – 线程“main”中的异常org.hibernate.MappingException:未知实体:

java – 线程“main”中的异常org.hibernate.MappingException:未知实体:

我正在使用my eclipse IDE
执行我的代码后,我得到以下异常

log4j:WARN No appenders Could be found for logger 

(org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.MappingException: UnkNown entity:info.inetsolv.Emp
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister

(SessionFactoryImpl.java:628)
at org.hibernate.impl.SessionImpl.getEntityPersister

(SessionImpl.java:1366)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState

(AbstractSaveEventListener.java:535)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist

(DefaultPersistEventListener.java:93)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist

(DefaultPersistEventListener.java:61)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:646)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:620)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:624)
at info.inetsolv.InsertEmprecord.main(InsertEmprecord.java:22)

POJO CLASS

package info.inetsolv;
@SuppressWarnings("serial")
public class Emp implements java.io.Serializable {

// Fields

private Integer eno;
private String name;
private Double salary;

// Constructors

/** default constructor */
public Emp() {
}

/** minimal constructor */
public Emp(Integer eno) {
    this.eno = eno;
}

/** full constructor */
public Emp(Integer eno,String name,Double salary) {
    this.eno = eno;
    this.name = name;
    this.salary = salary;
}

// Property accessors

public Integer getEno() {
    return this.eno;
}

public void setEno(Integer eno) {
    this.eno = eno;
}

public String getName() {
    return this.name;
}

public void setName(String name) {
    this.name = name;
}

public Double getSalary() {
    return this.salary;
}

public void setSalary(Double salary) {
    this.salary = salary;
}

}

HibernateSessionFactory.java

package info.inetsolv;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
 public class HibernateSessionFactory {

private static final ThreadLocal<Session> threadLocal = new 

ThreadLocal<Session>();
private static org.hibernate.SessionFactory sessionFactory;

private static Configuration configuration = new Configuration();
private static String CONfig_FILE_LOCATION = "/hibernate.cfg.xml";
private static String configFile = CONfig_FILE_LOCATION;

static {
    try {
        configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
    } catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
        e.printstacktrace();
    }
}
private HibernateSessionFactory() {
}

public static Session getSession() throws HibernateException {
    Session session = (Session) threadLocal.get();

    if (session == null || !session.isopen()) {
        if (sessionFactory == null) {
            rebuildSessionFactory();
        }
    session = (sessionFactory != null) ? sessionFactory.openSession(): null;
        threadLocal.set(session);
    }

    return session;
}

public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
    } catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
        e.printstacktrace();
    }
}

public static void closeSession() throws HibernateException {
    Session session = (Session) threadLocal.get();
    threadLocal.set(null);

    if (session != null) {
        session.close();
    }
}

public static org.hibernate.SessionFactory getSessionFactory() {
    return sessionFactory;
}

public static void setConfigFile(String configFile) {
    HibernateSessionFactory.configFile = configFile;
    sessionFactory = null;
}
public static Configuration getConfiguration() {
    return configuration;
}

}

客户端程序将记录插入DB

InsertEmprecord.java

package info.inetsolv;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class InsertEmprecord {
public static void main(String[] args) {

Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sf = cfg.buildSessionFactory();
Session hsession = sf.openSession();
Transaction tx = hsession.beginTransaction();

Emp e = new Emp();
e.setEno(6);
e.setName("six");
e.setSalary(1234d);
hsession.persist(e);

tx.commit();
hsession.close();
sf.close();


}

}

以下是我的hibernate映射文件
Emp.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 

3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="info.inetsolv.Emp" table="EMP" schema="HIB">
    <id name="eno" type="java.lang.Integer">
        <column name="ENO" precision="5" scale="0" />
        <generator/>
    </id>
    <property name="name" type="java.lang.String">
        <column name="NAME" length="10" />
    </property>
    <property name="salary" type="java.lang.Double">
        <column name="SALARY" precision="10" />
    </property>
</class>
</hibernate-mapping>

以下是我的hibernate配置文件

的hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
      "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
<property name="dialect">
    org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
    jdbc:oracle:thin:@localhost:1521:xe
</property>
<property name="connection.username">hib</property>
<property name="connection.password">abc</property>
<property name="connection.driver_class">
    oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">
    my oracle drive
</property>
<property name="show_sql">true</property>

</session-factory>

</hibernate-configuration>

解决方法

您没有为对象Emp配置映射.配置文件hibernate.cfg.xml应包含资源Emp.hbm.xml的映射.

<mapping resource="info/inetsolv/Emp.hbm.xml"/>

java.nio.file.InvalidPathException: Illegal char <:>

java.nio.file.InvalidPathException: Illegal char <:>

 

一、报错:

 

java.nio.file.InvalidPathException: Illegal char <:>
at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
at java.nio.file.Paths.get(Paths.java:84)

 

二、报错code

 

String path = Thread.currentThread().getContextClassLoader().getResource("fileName").getFile();
//或者
//Thread.currentThread().getContextClassLoader().getResource("fileName").getPath();

new
String(Files.readAllBytes(Paths.get(path)), "utf-8");

原因:windows系统读取的路径,盘符前有根路径"/"符号。

URL url = Thread.currentThread().getContextClassLoader().getResource("fileName");
content = new String(Files.readAllBytes(Paths.get(url.toURI())), "utf-8");

 

解决思路:获取URL转URI完事,更直接点,getResourceAsStream读取完事。

java.lang.ClassLoader
public InputStream getResourceAsStream(String name) {
        URL url = getResource(name);
        try {
            return url != null ? url.openStream() : null;
        } catch (IOException e) {
            return null;
        }
    }

    public URL getResource(String name) {
        URL url;
        if (parent != null) {
            url = parent.getResource(name);
        } else {
            url = getBootstrapResource(name);
        }
        if (url == null) {
            url = findResource(name);
        }
        return url;
    }

 

java.nio.file.Paths

 

public static Path get(URI uri) {
        String scheme =  uri.getScheme();
        if (scheme == null)
            throw new IllegalArgumentException("Missing scheme");

        // check for default provider to avoid loading of installed providers
        if (scheme.equalsIgnoreCase("file"))
            return FileSystems.getDefault().provider().getPath(uri);

        // try to find provider
        for (FileSystemProvider provider: FileSystemProvider.installedProviders()) {
            if (provider.getScheme().equalsIgnoreCase(scheme)) {
                return provider.getPath(uri);
            }
        }

        throw new FileSystemNotFoundException("Provider \"" + scheme + "\" not installed");
    }



    public static Path get(String first, String... more) {
        return FileSystems.getDefault().getPath(first, more);
    }

 

三、Exception

 

//jar程序读取报错 java -jar
java.nio.file.FileSystemNotFoundException
    at com.sun.nio.zipfs.ZipFileSystemProvider.getFileSystem(ZipFileSystemProvider.java:171)
    at com.sun.nio.zipfs.ZipFileSystemProvider.getPath(ZipFileSystemProvider.java:157)
    at java.nio.file.Paths.get(Paths.java:143)

//jar读取文件报错,找不到文件
//URL url = Thread.currentThread().getContextClassLoader().getResource(filename);
//String content = new String(Files.readAllBytes(Paths.get(url.toURI())), "utf-8");

//直接通过流读取文件内容
public static String getFileContent(String filename) {
InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
ByteArrayOutputStream bos = new ByteArrayOutputStream();

String content = null;
try {

int size = 1024;
byte[] buffer = new byte[size];
int readLen = 0;
while ((readLen = inStream.read(buffer, 0, size)) != -1) {
bos.write(buffer, 0, readLen);
}

byte[] bytes = bos.toByteArray();
content = new String(bytes);

} catch (IOException e) {
log.error("读取文件内容出错", e);
} finally {
try {
if(inStream != null)
inStream.close();
if(bos != null)
bos.close();
} catch (IOException e) {
;
}
}

return content;
}

 

 

 

获取resource目录的路径
Thread.currentThread().getContextClassLoader().getResource("").getPath()

Maven获取resources的文件路径、读取resources的文件

 https://blog.csdn.net/huanghaocs/article/details/83242628

Java项目读取resources资源文件路径那点事

今天的关于线程“ main”中的异常java.nio.file.InvalidPathException:索引2处的非法char <:>:java唯一索引异常的分享已经结束,谢谢您的关注,如果想了解更多关于ios – 线程“main”中的异常java.lang.RuntimeException:无效的十六进制字符:v – APNS notnoop、Java Appium-线程“主”中的异常java.lang.ExceptionInInitializerError-由以下原因引起:java.lang.IllegalArgumentException、java – 线程“main”中的异常org.hibernate.MappingException:未知实体:、java.nio.file.InvalidPathException: Illegal char <:>的相关知识,请在本站进行查询。

本文标签: